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()
Copyright @appwhy all right reserved,powered by Gitbook文件更新于: 2020-10-23 16:22:21

results matching ""

    No results matching ""