常用内建模块
os 模块
os 模块中主要包含创建和管理进程或者文件系统内容(比如文件和目录)的函数, os 模块为平台特定的一些模块做了包装, 使得所有平台访问的函数接口相同, 这样就具备了可移植性。下面是 os 模块下一些常用的函数:
| 方法 | 说明 | 用法举例 |
|---|---|---|
| os.getcwd() | 获取当前所在的目录 | os.getcwd() |
| os.chdir() | 切换目录 | os.chdir(‘..’) (.. 为父级目录, 这里表示切换到上一级目录, 相当于命令行的 cd ..) |
| os.getenv() | 获取系统变量的值(若变量不存在返回 None) | os.getenv(‘SHELL’) |
| os.environ.getenv() | 获取系统变量的值(若变量不存在会引发异常) | os.environ.getenv(‘SHELL’) |
| os.listdir() | 列出目录下的全部文件 | os.listdir(‘dir’), 列出 dir 目录下的全部文件 |
| os.walk() | 递归地遍历指定的目录, 对于每个目录都会生成一个元组, 其中包含了目录的路径、该目录下所有的子目录以及该目录下所有文件的列表。它是一个生成器, 可以用 list() 转换成一个列表 | os.walk(‘dir’), list(os.walk(‘dir’)) |
| os.makedir() | 创建一个目录, 只能创建单层目录, 若创建多层目录会报错 | os.makedir(‘dir’), 创建一个名为 dir 的目录 |
| os.makedirs() | 创建多层目录 | os.makedirs(‘/dir2/dir3’) |
| os.remove() | 删除指定文件 | os.remove(‘1.txt’), 删除当前目录下的 1.txt 文件 |
| os.rmdir() | 删除目录 | os.rmdir(‘dir1’), 删除当前目录下的 dir 目录 |
| os.rename() | 重命名文件或者目录 | os.rename(‘dir2’, ‘dir1’), 将 dir2 目录重命名为 dir1 |
os.path 模块、
os 模块下有一个独有的 path 子模块, 可以使用 os.path.函数名字 的方式调用, 也可以 import os.path。os.path 模块是和路径有关的。下面是此模块下一些常用的函数:
| 方法 | 说明 |
|---|---|
| os.path.basename() | 获得指定文件路径的文件名字 |
| os.path.dirname() | 获得文件路径的目录名字 |
| os.path.exists() | 判断文件或者目录是否存在 |
| os.path.isdir() | 判断指定路径是否是目录 |
| os.path.isfile() | 判断指定路径是否是文件 |
| os.path.join() | 拼接路径 |
| os.path.split() | 路径拆分 |
| os.path.splitext() | 获得路径的后缀 |
In: import os |
sys 模块
sys 模块提供了特定系统的配置和操作。
| 方法 | 说明 |
|---|---|
| sys.platform | 用来构建解释器的操作系统平台 |
| sys.version | 构建时的版本信息, 包含完整的版本号和构建日期、编译器、平台信息等 |
| sys.version_info | 同样是版本信息, 但不是字符串, 可以直接获得对应类型版本的信息 |
| sys.path[0] | 搜索模块的路径列表 |
| sys.modules.get() | 已经导入的模块列表 |
| sys.getrefcount() | 查看对象的引用计数 |
| sys.getsizeof() | 以字节(byte)为单位返回对象大小。这个对象可以是任何类型的对象。 所以内置对象都能返回正确的结果 但不保证对第三方扩展有效,因为和具体实现相关。 |
sys.getrefcount
Python 使用引用计数和垃圾回收来完成字段的内存管理, 当一个对象的引用数降为 0, 就会自动标记为回收。在实际开发中, 可能因为 debug 或者调试的需要, 需要了解引用计数, 就可以使用 sys.getrefcount()。
import sys |
上面的计数比预期多一个, 是因为 getrefcount() 本身也会维护一个临时引用。
sys.getsizeof
了解对象的引用计数不足以发现内存泄漏, 可以使用 sys.getsizeof 辅助, 这样可以确定对象消耗内存的情况。
# 打印 Python 内置数据结构占用的字节数 |
命令行参数 sys.argv
在命令行下运行一个 Python 程序, 可以通过 sys.argv 获取脚本的名字和参数。有个 argv.py, 代码如下:
import sys |
> python argv.py |
csv 模块
逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。 纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。
with open('test.csv', 'wt') as f: |
datetime 模块
datetime 模块用来完成日期和时间的解析、格式化和算术运算等。
In: import datetime |
时间格式化
In: dt_format = '%Y-%m-%d %H:%M:%S' |
random 模块
random 模块用于生成随机数。
| 方法 | 说明 |
|---|---|
| random.random() | 在 [0, 1) 的范围内返回一个随机数 |
| random.uniform(a, b) | 在 [a, b) 范围内返回一个随机数 |
| random.seed() | 改变随机数生成器的种子,可以在调用其他随机模块函数之前调用此函数 |
| random.randint(a, b) | 在 [a, b] 范围内返回一个随机整数 |
| random.randrange ([start,] stop [,step]) | 返回指定递增基数集合中的一个随机数,基数缺省值为1。start : 指定范围内的开始值,包含在范围内。stop: 指定范围内的结束值,不包含在范围内。step: 指定递增基数。 |
| sample(seq, n) | 从序列seq中选择n个随机且独立的元素 |
| random.choices(seq, k=a) | 从序列seq中选择a个随机的元素, 元素有可能重复 |
| random.choice(seq) | 从序列seq中返回随机的元素 |
In: import random |
logging 模块
在代码中使用 print() 打印输出是临时性的调试用途的方案。如果希望在线上记录应用日志或者错误日志等, 可以使用 Python 自带的日志模块 logging。
常用的日志记录类型有两种, 一种是写到文件里面, 另外一种是终端输出。日志文件存储下来是为了未来回溯的方便, 终端输出是以便于实时查看。
logging 模块自带了 6 种级别的日志类型。级别如下(变量值越高说明级别越高):
| 日志级别 | 变量值 |
|---|---|
| CRITICAL | 50 |
| ERROR | 40 |
| WARNING | 30 |
| INFO | 20 |
| DEBUG | 10 |
| NOTSET | 0 |
In: import logging |
把日志写入文件
import logging |
> python loging_to_file.py |
最佳使用 logging 的方案
In : import logging |
logging 模块内置日志格式
| 格式 | 说明 |
|---|---|
| %(name)s | 生成日志的Logger名称。 |
| %(levelno)s | 数字形式的日志级别,包括DEBUG, INFO, WARNING, ERROR和CRITICAL。 |
| %(levelname)s | 文本形式的日志级别,包括’DEBUG’、 ‘INFO’、 ‘WARNING’、 ‘ERROR’ 和’CRITICAL’。 |
| %(pathname)s | 输出该日志的语句所在源文件的完整路径(如果可用)。 |
| %(filename)s | 文件名。 |
| %(module)s | 输出该日志的语句所在的模块名。 |
| %(funcName)s | 调用日志输出函数的函数名。 |
| %(lineno)d | 调用日志输出函数的语句所在的代码行(如果可用)。 |
| %(created)f | 日志被创建的时间,UNIX标准时间格式,表示从1970-1-1 00:00:00 UTC计算起的秒数。 |
| %(relativeCreated)d | 日志被创建时间与日志模块被加载时间的时间差,单位为毫秒。 |
| %(asctime)s | 日志创建时间。默认格式是 “2003-07-08 16:49:45,896”,逗号后为毫秒数。 |
| %(msecs)d | 毫秒级别的日志创建时间。 |
| %(thread)d | 线程ID(如果可用)。 |
| %(threadName)s | 线程名称(如果可用)。 |
| %(process)d | 进程ID(如果可用)。 |
| %(message)s | 日志信息。 |
相关阅读链接
1.https://pymotw.com/3/
2.https://pymotw.com/2/
3.https://www.python.org/dev/peps/pep-3132/
4.https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior
5.https://zh.wikipedia.org/wiki/%E6%A2%85%E6%A3%AE%E6%97%8B%E8%BD%AC%E7%AE%97%E6%B3%95
6.https://www.python.org/dev/peps/pep-3101/
7.https://www.python.org/dev/peps/pep-0282/