1. python 常用知识点
[TOC]
1.1. 字符编码
全角与半角:简单来说,对于英文字母、数字、符号而言,全角占用2个标准字符的位置,而半角只占用1一个标准字符的位置.
对于英文字母、数字、符号而言(二者相差65248):
- 半角字符unicode编码从33~126 。
- 全角字符unicode编码从65281~65374 。
空格比较特殊,全角为 12288,半角为 32。
可以自行编码进行二者之间的转换,如下面代码所示:
chr获取数字对应得unicode字符,ord获取unicode字符对应的编码。
In [54]: chr(123)
Out[54]: '{'
In [55]: ord('{')
Out[55]: 123
In [56]: ord('我')
Out[56]: 25105
In [57]: chr(25105)
Out[57]: '我'
也可以使用:
import unicodedata
unicodedata.normalize('NFKC', ':') # 将后面字符串中的全角字符转换为半角字符
1.2. 进制转换
python中有内置函数进行转换。
将十进制数字转化为其他进制的字符串:
In [41]: str(32) # 10进制
Out[41]: '32'
In [25]: hex(32) # 16进制
Out[25]: '0x20'
In [26]: oct(32) # 8进制
Out[26]: '0o40'
In [27]: bin(32) # 2进制
out[27]: '0b100000'
将其他进制的字符串转化为10进制数字:
In [33]: int('20',16) # 将字符串按16进制进行解释
Out[33]: 32
In [34]: int('20',10)
Out[34]: 20
In [35]: int('20',8)
Out[35]: 16
1.3. 重新加载某些模块
import some_module #防止reload报错
import importlib
importlib.reload(some_module)
在ipython中可以使用以下命令,可以自动重新加载修改过的文件:
%load_ext autoreload
%autoreload 2
注:要在启动ipython时执行
1.4. 遍历文件(os模块)
def getFiles(path):
list = os.listdir(path) #列出文件夹下所有的目录与文件
for i in range(0,len(list)):
path_ = os.path.join(path,list[i])
if os.path.isfile(path_):
#你想对文件的操作
或者使用os.walk方法:
def walkFiles(path):
for root, dirs, files in os.walk(path):
# root 表示当前正在访问的文件夹路径
# dirs 表示该文件夹下的子目录名list
# files 表示该文件夹下的文件list
# 遍历文件
for f in files:
print(os.path.join(root, f))
# 遍历所有的文件夹
for d in dirs:
print(os.path.join(root, d))
1.5. python -m xxx 与 python xxx.py 的区别
这2种方式主要是影响 sys.path
变量(相当于liunx中的PATH):
python -m xxx
: 把执行这条命令时所在的目录添加进sys.path
中python xxx.py
: 把xxx.py所在的目录添加进sys.path
中
这2种方式都会把xxx.py的 __name__
属性置为 __main__
。
1.6. 执行系统命令,获得输出
# 方法1
import os
p = os.popen('ls')
x=p.read()
print(x)
# 方法2
import subprocess
res = subprocess.Popen('ls',shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE,close_fds=True)
result = res.stdout.readlines()