详细在两位大王的博客内
高级的文件 文件夹 压缩包 处理模块
shutil.copyfileobj(fsrc, fdst[, length])
将文件内容拷贝到另一个文件中,可以部分内容
shutil.copyfile(src, dst)
拷贝文件
shutil.copymode(src, dst)
仅拷贝权限。内容、组、用户均不变
shutil.copystat(src, dst)
拷贝状态的信息,包括:mode bits, atime, mtime, flags
shutil.copy(src, dst)
拷贝文件和权限
shutil.copy2(src, dst)
拷贝文件和状态信息、
shutil.ignore_patterns(*patterns)
shutil.copytree(src, dst, symlinks=False, ignore=None)
递归的去拷贝文件
例如:copytree(source, destination, ignore=ignore_patterns('*.pyc', 'tmp*'))
shutil.move(src, dst)
递归的去移动文件
shelve模块是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式,只有一个open方法
在一个序列化的文件内dump重复dump N次,读的时候只需记住key
subprocess
logging
用于便捷记录日志且线程安全的模块
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
import
logging
logging.basicConfig(filename
=
'log.log'
,
format
=
'%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s'
,
datefmt
=
'%Y-%m-%d %H:%M:%S %p'
,
level
=
10
)
logging.debug(
'debug'
)
logging.info(
'info'
)
logging.warning(
'warning'
)
logging.error(
'error'
)
logging.critical(
'critical'
)
logging.log(
10
,
'log'
)
|
对于等级:
1
2
3
4
5
6
7
8
|
CRITICAL
=
50
FATAL
=
CRITICAL
ERROR
=
40
WARNING
=
30
WARN
=
WARNING
INFO
=
20
DEBUG
=
10
NOTSET
=
0
|
只有大于当前日志等级的操作才会被记录。
对于格式,有如下属性可是配置:
\
subprocess
五、执行系统命令
可以执行shell命令的相关模块和函数有:
import commands result = commands.getoutput('cmd') result = commands.getstatus('cmd') result = commands.getstatusoutput('cmd')
以上执行shell命令的相关的模块和函数的功能均在 subprocess 模块中实现,并提供了更丰富的功能。
call
执行命令,返回状态码
1
2
|
ret
=
subprocess.call([
"ls"
,
"-l"
], shell
=
False
)
ret
=
subprocess.call(
"ls -l"
, shell
=
True
)
|
shell = True ,允许 shell 命令是字符串形式
check_call
执行命令,如果执行状态码是 0 ,则返回0,否则抛异常
1
2
|
subprocess.check_call([
"ls"
,
"-l"
])
subprocess.check_call(
"exit 1"
, shell
=
True
)
|
check_output
执行命令,如果状态码是 0 ,则返回执行结果,否则抛异常
1
2
|
subprocess.check_output([
"echo"
,
"Hello World!"
])
subprocess.check_output(
"exit 1"
, shell
=
True
)
|
subprocess.Popen(...)
用于执行复杂的系统命令
参数:
终端输入的命令分为两种:
import subprocess obj = subprocess.Popen(["python"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) out_error_list = obj.communicate('print "hello"') print out_error_list
>>> ret = subprocess.call("dir", shell=True) 驱动器 C 中的卷没有标签。 卷的序列号是 103A-09ED C:\Users\Administrator.aa-PC\PycharmProjects\untitled 的目录 2016/03/05 14:07 <DIR> . 2016/03/05 14:07 <DIR> .. 2016/03/04 22:43 <DIR> .idea 2016/03/04 22:46 <DIR> day6 2016/03/05 13:20 <DIR> day7 2016/03/05 13:35 286 shelve_mod.py 2016/03/05 13:35 69 shelve_test.bak 2016/03/05 13:31 1,578 shelve_test.dat 2016/03/05 13:35 0 shelve_test.dir 2016/03/05 14:07 52 shelve_txt.bak 2016/03/05 13:36 1,068 shelve_txt.dat 2016/03/05 14:07 52 shelve_txt.dir 2016/03/05 13:35 <DIR> __pycache__ 7 个文件 3,105 字节 6 个目录 66,482,196,480 可用字节 >>>