locale
1 | import locale |
pathlib
os.path
1 | os.path.isdir(r"C:\Users") |
os.stat
配合stat
模块有更丰富的功能
1 | pfile = os.path.join(r"C:\temp", "output.txt") |
os.sep
配合字符串.join
、.split
方法可以实现基本相同 效果
fileinput
stat
stat
:包含os.stat
信息相关常量、函数以便跨平台使用
1 | import stat |
os.path
中包含常用部分相同功能函数
glob
glob.glob
1 | import glob |
参数
pathname
:文件名模式?
:单个字符*
:任意字符[]
:字符选集.
开头路径不被以上?
、*
匹配recursive
False
:默认True
:**
将递归匹配所有子目录、文件返回值:匹配文件名列表
glob.glob
是利用glob.fnmatch
模块匹配名称模式
shutil
shutil
模块:包含文件操作相关
fnmatch
linecache
macpath
filecmp
tempfile
os
os
:与Python所在底层操作系统相对应变量、函数
os
模块提供了POSIX工具
os.path
包含在C程序、shell脚本中经常用到的所有操作系统调用,涉及 目录、进程、shell变量
实践中,os
基本可以作为计算机系统调用的可移植接口
使用
os
模块都能跨平台os
提供专属该平台的工具1 | os.environ |
os.environ
os.environ
可以向普通字典一样键索引、赋值
默认继承系统所有环境变量、命令行临时环境变量
在最新的python中,对os.environ
的键值修改将自动导出
到应用的其他部分
os.environ
对象os.putenv
生效,
反之不会更新os.environ
python进程、链入C模块、该进程派生子进程都可以获取新的 赋值
os.putenv
os.putenv
同时会调用C库中的putenv
(若在系统中可用)
导出设置到python链接的C库
putenv
则可将os.environ
作为参数传递1 | os.getpid() |
1 | os.sep |
||Linux|Win|Unix|
|———|——————|———|———|
|sep|/
|\
|/
(某些MAC:
)|
|pathsep|:
|;
||
|curdir|.
|||
|pardir|..
|||
|linesep|\n
|\r\n
||
- win下目录组分隔符是
\
,大部分情况下看到\\
是作为\
转义字符,防止\
和之后字符转义
- 确认不会转义时,直接使用
\
也是可以的- 使用
r''
表示不转义也可以直接使用\
1 | os.mkdir(dirname) |
os.listdir
返回值:包含目录中所有条目名称的列表
需要注意的是:文件名同样有编码
open
函数也可以类似使用字节串确定需要打开的文件glob.glob
,os.walk
内部都是通过调用os.listdir
实现,行为相同
glob
模块也有遍历目录的能力
os.walk
返回值:返回迭代器
(dirname, subdirs, subfile)
参数
topdown
:默认True
,自顶向下返回1 | descriptor = os.open(path, flags, mode) |
os
通过调用文件的描述符来处理文件
基于文件描述符的文件以字节流形式处理
文件流对象、工具仅仅是在基于描述符的文件的封装
可以通过.fileno()
获得文件流对象对应文件描述符,
sys.stdin
、sys.stdout
、sys.stderr
对应文件
描述符是:0、1、2
1 | os.write(1, b"hello world\n") |
可以通过os.fdopen
把文件描述符封装进文件流对象
1 | fdfile = os.open("filename", (os.O_RDWR|os.O_BINARY)) |
os.open
1 | def os.open(path, |
参数
mode
:需要模式标识符进行二进制操作以得到需要的模式
os.O_RDWR
os.O_RDONLY
os.O_WRONLY
os.O_BINARY
os.O_EXCL
:唯一访问权,是python在并发、进程
同步情况下锁定文件最便捷的方法os.O_NONBLOCK
:非阻塞访问
- 其他模式选项参见
os
模块
返回值:文件描述符
1 | os._exit(0) |
io
time
argparse
argparse
:编写用户友好的命令行接口
argparse.ArgumentParser
1 | class argparse.ArgumentParser: |
1 | # 添加参数 |
action
:关联命令行参数、动作,除以下预定义行为,
还可以传递argparse.Action
子类、相同接口类store
:存储值,默认行为store_const
:存储const
指定值,通常用于在
选项中指定标志store_true
/"store_false"
:类上append
:存储列表,适合多次使用选项append_const
:将const
参数值追加至列表,
适合多个选项需要在同一列表中存储常数
(即多个dest
参数相同)count
:计算选项出现次数help
:打印完整帮助信息version
:打印version
参数值- `nargs`:参数消耗数目,指定后`pare_args`返回列表,
否则参数消耗由`action`决定
- `int`:消耗参数数目,`nargs=1`产生单元素列表,
和默认不同
- `?/*/+`:类似普通正则,`+`会在没有至少一个参数时
报错
- `argparse.REMAINDER`:所有剩余参数,适合用于从
命令行传递参数至另一命令行
- `const`:保存不从命令行读取、被各种动作需求的常数
- `action="store_const"/"append_const"`:必须给出
- `nargs=?`:气候选项没有参数时,使用`const`替代
- `type`:允许任何类型检查、类型转换,一般内建类型、
函数可以直接使用
- `argparse.FiltType("w")`:为文件读写方便,预定义
类型转换
- `dest`:`parse_args()`返回的参数属性名
- 位置选项:缺省为首个选项名
- 关键字选项:优秀首个`--`开头长选项名,选项目中间
`-`被替换为`_`
1 | # 解析参数,无法解析则报错 |
1 | def add_subparsers(self, |
1 | class argparse.Action: |
1 | class argparse.ArgumentDefaultHelpFormatter |
1 | # 容纳属性的类 |
getopt
optparse
logging
logging.config
logging.handlers
getpass
curses
curses.textpad
curses.ascii
curses.panel
platform
errno
ctypes
builtins
filter(iterable, func)
:过滤func
返回布尔否值元素enumerate(iterable)
:添加索引迭代zip(*iterables)
:打包迭代元素map(func, *iterables)
:func
接受各迭代器中元素作为
参数调用(类似zip
)iter
:两种产生迭代器的模式iter(iterable)
:返回迭代器iter(callable, sentinel)
:调用callable
直到返回
sentinel
停止迭代(不包括)while
循环itertools
itertools
:包含为高效循环而创建迭代器的函数
count(start, step=1)
:步长累加cycle(p)
:循环p
中元素repeat(elem, n=None)
:重复elem
accumulate(p, func=None)
:累加p
中元素chain(*iters)
:链接迭代器chain.from_iterable(iterable)
:链接可迭代对象中迭代器compress(data, selelctors)
:根据selectors
选取data
dropwhile(pred, seq)
:保留首个满足pred
之后所有元素takewhile(pred, seq)
:保留首个不满足pred
之前元素filterfalse(pred, seq)
:反filter
groupby(iterable, key=None)
:根据key(v)
值分组迭代器islice(seq, start=0, stop=None, step=1)
:切片starmap(func, seq)
:迭代对seq
中执行func(*elem)
tee(iterable, n=2)
:复制迭代器,默认2个zip_longes(*iters, fillvalue)
:依最长迭代器zip
,较短
循环填充或fillvalue
填充product(*iters, repeat=1)
:笛卡尔积permutations(p, r=None)
:r
长度的排列,缺省全排列combinations(p, r)
:r
长度组合combinations_with_replacement(p,r)
:可重复组合functools
functools
:包含高阶函数,即参数、返回值为其他函数的函数
cmp_to_key(func)
:将旧式比较函数转换新式key function
key
参数中转换旧式比较函数sorted
min
max
heapq.nlargest
heapq.nsmallest
itertools.groupby
- key function:接收参数,返回可以用于排序的值
partial(func, *args, **kwargs)
:返回partial对象,其
调用时类似使用args
、kwargs
调用func
partial.method(func, *args, **kwargs)
:适合类命名空间
中函数、描述器
update_wrapper(wrapper, wrapped, assigned=WRAPPER_ASSIGNMENTS, udpated=WRAPPER_UPDATES)
:
更新wrapper
函数信息为wrapped
函数信息
reduce(func, iterable[, initializer])
:使用func
接受
两个参数,reduce处理iterable
@lru_cache(maxsize=128, typed=False)
:缓存函数执行结果
- 可以用于方便实现动态规划
@singledispatch
:转换函数为单分派范型函数,实现python
的重载(接口多态)
- single dispatch:单分派,基于单个参数类型分派的 范型函数分派形式
@wraps(wrapped, assigned=WRAPPER_ASSIGNMENTS, updated=WRAPPER_UPDATES)
:
等价于partial(update_wrapper, wrapped, assigned, updated)
@total_ordering
:根据类中已定义比较方法实现剩余方法__eq__
、其他富比较方法中任意一种operator
operator
:提供与python内置运算符对应的高效率函数
lt(a,b)
/__lt__(a,b)
le(a,b)
eq(a,b)
ne(a,b)
ge(a,b)
gt(a,b)
not(obj)
truth(obj)
:等价于使用bool构造器is_(a,b)
is_not(a,b)
add(a,b)
sub(a,b)
mul(a,b)
div(a,b)
pow(a,b)
mod(a,b)
floordiv(a,b)
truediv(a,b)
matmul(a,b)
abs(obj)
neg(obj)
pos(obj)
- 在位运算对可变数据类型才会更新参数,否则只返回结果
iadd(a,b)
:等价于a += b
isub(a,b)
imul(a,b)
idiv(a,b)
ipow(a,b)
imod(a,b)
ifloordiv(a,b)
itruediv(a,b)
imatmul(a,b)
and_(a,b)
or_(a,b)
xor(a,b)
inv(obj)
/invert(obj)
lshift(a,b)
shift(a,b)
iand(a,b)
ior(a,b)
ixor(a,b)
index(a)
concat(a,b)
contains(a,b)
countOf(a,b)
delitem(a,b)
getitem(a,b)
indexOf(a,b)
setitem(a,b,c)
length_hint(obj, default=0)
attrgetter(attr)
/attrgetter(*attrs)
:返回函数,函数
返回值为参数属性attr
itemgetter(item)
/itemgetter(*items)
:类似methodcaller(name[, args...])
:类似