一、简介
使用Python语言处理文件,一般我们会想到执行shell命令,但是执行shell有很多的问题,小编后来发现shutil是个好东西,shutil是高层次的文件操作,类似于高级API,其强大之处在于对文件的复制、备份、压缩包等
二、使用
shutil.copyfileobj(src, dst[, length])
将文件内容拷贝到另一个文件中
import shutil shutil.copyfileobj(open('/home/work/1.txt', 'r'), open('/home/work/2.txt', 'w'))
shutil.copyfile(src, dst)
copy文件
import shutil shutil.copyfile('/home/work/file1', '/home/work/file2')
shutil.copymode(src, dst)
仅拷贝权限。内容、组、用户均不变
import shutil shutil.copymode('test1.log', 'test2.log')
shutil.copy(src, dst)
拷贝一个文件到一个文件或一个目录
import shutil shutil.copy('test1.log', 'test2.log')
shutil.copy2(src, dst)
在copy上的基础上再复制文件(最后访问时间、修改时间)也复制过来了
import shutil shutil.copy2('/home/work/test1.log', '/home/work/test2.log')
shutil.ignore_patterns(*patterns)
为copytree的辅助函数,提供glob功能
shutil.copytree(src, dst, symlinks=False, ignore=None)
递归的去拷贝文件夹, 如果第3个参数是True,则复制目录时将保持文件夹下的符号连接,
如果第3个参数是False,则将在复制的目录下生成物理副本来替代符号连接
import shutil shutil.copytree('/home/work/test1.log', '/home/work/test2.log', symlinks=True, ignore=shutil.ignore_patterns('*.pyc', 'tmp*'))
shutil.rmtree(path[, ignore_errors[, onerror]])
递归的去删除文件
import shutil shutil.rmtree('/home/work/test.log')
shutil.move(src, dst)
递归的移动文件
import shutil shutil.move("/home/work/test1","/home/work/test2")
shutil.make_archive(base_name, format[, root_dir,...])
创建压缩包并返回文件路径,例如:zip、tar
base_name:文件名
format: 压缩包种类,'zip', 'tar', 'bztar','gztar'
root_dir: 压缩的根目录
import shutil ret = shutil.make_archive("test", 'gztar', root_dir='/home/work/dsc/test')