六、shutil
高级的 文件、文件夹、压缩包 处理模块
shutil模块:
shutil模块可以进行一些文件\文件夹的拷贝\压缩\删除
shutil.copyfileobj(fsrc,fdst[,length]) 这里的fsrc和fdst不是文件名,而是已经打开了的文件对象
比如 a = open('1.txt','r') b = open('2.txt','w')
这个就是在 python 中拷贝文件的方法.记住参数是文件对象.
shutil.copyfile(src,dst) #内部拷贝的时候还是调用copyfileobj()
这个就是拷贝文件了.如果src不存在报错,如果是特殊文件也报错.
shutil.copymode(src,dst) 仅拷贝权限.内容\组\用户均不变
从源码中查看到,先获取源文件权限再调用os.chmod()改权限
shutil.copystat(src,dst) 拷贝文件的状态信息.
shutil.copy拷贝文件和权限,前面shutil.copyfiles()只拷贝文件
shutil.copy2 拷贝文件和状态信息.
shutil.ignore_patterns(*patterns)
shutil.copytree()递归去拷贝文件
shutil.move递归的去移动目录
shutil.rmtree()递归删除目录
shutil.make_archive(base_name,format,...) 创建一个压缩包,参数介绍
:format 压缩包种类,'zip','tar','bztar','gztar'
:base_name文件名类似name.tar.gz
:root_idr 要压缩的文件夹路径(默认是当前目录)
:owner 用户,默认当前用户
:group 组,默认当前组
:logger 用于记录日志,通常是logging.Logger对象
使用实例:
>>> shutil.make_archive('/Users/tedzhou/www','gztar',root_dir = '/Users/tedzhou/test')
'/Users/tedzhou/www.tar.gz' #再这个目录下生成了一个压缩包为www.tar.gz
#我们以后会经常的通过python写一些备份,就涉及到压缩,如果没有这个模块,就得通过os.system()用shell了,这样又low了
如果不用shutil,我们能不能完成压缩呢?可以,使用zipfile模块,只是麻烦些:
zipfile模块
import zipfile
压缩
z = zipfile.ZipFile('lianxi.zip','w')
z.write('a.log')
z.write('data.data')
z.close()
解压
z = zipfile.ZipFile('lianxi.zip','r')
z.extractall()
z.close()
tarfile模块
# 压缩
tar = tarfile.open('your.tar','w')
tar.add('lianxi.zip',src)
七、ConfigParser
用于对特定的配置进行操作,当前模块的名称在 python 3.x 版本中变更为 configparser。
八、logging
用于便捷记录日志且线程安全的模块
logging模块
简介:做日志的.很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能又错误\调试\正常\警告\错误等不同级别的日志.
如果你的日志同时打印到屏幕上又写到文件里又写到数据库里.另外,日志得格式,是不是也得标准化.比如不用这个模块你就得分开处理.
python得logging模块就题哦那个了标准得日志接口.你可以通过它存储各种格式得日志,logging得日志可以分为debug(),info(),warning(),error()和critical() 5个级别.下面我们看一下怎么用.
级别说明:
debug 调试信息非常详细
info 正常得
warning 警告
error 错误
critical 非常严重得
使用说明:
默认格式举例: (默认是打印到屏幕上)
我们举例下warning(),critical()级别得日志.
>>> import logging
>>> logging.warning('user [ted] attempted wrong password more than 3 times ')
WARNING:root:user [ted] attempted wrong password more than 3 times
>>> logging.critical("server is down")
CRITICAL:root:server is down
#我们可以看得到会打印出: 级别:用户:日志信息 (这里得用户是当前python文件所属得用户)
将日志写入文件举例: