shutil
高级的文件、文件夹、压缩包处理模块
copyfileobj(fsrc, fdst[, length])
将文件内容拷贝到另一个文件
>> shutil.copyfileobj(open('test2.log', 'r'), open('test3.log', 'w'))
copyfile(src, dst)
拷贝文件
>> shutil.copyfile('test3.log', 'test4.log')
copymode(src, dst)
拷贝权限,读写执行。 内容、组、用户不变
>> shutil.copymode('test4.log', 'test3.log')
copystat(src, dst)
拷贝状态信息,atime, mtime,flags, mode bits
>> shutil.copystat('test4.log', 'test3.log')
copy(src, dst)
拷贝文件和权限
>> shutil.copy('test4.log', 'test5.log')
copy(src, dst)
拷贝文件和状态信息
>> shutil.copy2('test5.log', 'test6.log')
shutil.ignore_patterns(*patterns)
shutil.copytree(src, dst, symlinks=False, ignore=None)
递归拷贝文件夹
shutil.copytree('test', 'test2', symlinks=False, ignore=shutil.ignore_patterns('*.pyc', 'tmp*'))
move(src, dst)
shutil.rmtree(path)
递归的去删除文件
shutil.make_archive(base_name, format...)
创建压缩包并返回文件路径
-
base_name 压缩的文件名,也可以是压缩包路径。只是文件名时,则保存至当前目录,否则保存至指定目录。
-
Format 压缩包种类, zip,tar,bztar,gztar
-
root_dir 要压缩的文件夹路径
-
owner 用户,默认当前用户
-
group 组,默认当前组
-
logger 记录日志,通常是logging.Logger对象
将test目录压缩为test.tar.gz,保存至当前目录。
>> shutil.make_archive('test', 'gztar', root_dir='/tmp/test')
>> '/tmp/test.tar.gz'
将test目录压缩为test.tar.gz,保存至当前/root目录。
>> shutil.make_archive('/root/test', 'gztar', root_dir='/tmp/test')
>> '/tmp/test.tar.gz'
zipfile
压缩
z = zipfile.ZipFile('test.zip', 'w')
z.write('re1.py')
z.close()
解压
z = zipfile.ZipFile('test.zip', 'r')
# z.extractall() # 提取所有文件
z.extract('re1.py') # 提取单个文件
查看压缩包里内容
nlist = z.namelist() # 压缩包成员列表
print(nlist)
tarfile
压缩
tar = tarfile.open('test2.tar', 'w')
tar.add('re1.py', arcname='re.py')
tar.add('oss.py', arcname='myoss.py')
tar.close()
解压
tar = tarfile.open('test2.tar', 'r')
# nlist = tar.getmembers()
obj = tar.getmember('re.py')
tar.extract(obj)
print(obj)