python-shutil 模块

文件处理的高阶用法

拷贝文件、删除文件、拷贝目录、删除目录、可以带权限、压缩、归档

import shutil
# 将文件内容拷贝到另一个文件中,可以部分内容

f1_p = 'shave_test.py'
f2_p = 'shave_test_new.py'
f1 = open(f1_p, 'r')
f2 = open(f2_p, 'w')
shutil.copyfileobj(f1, f2, length=5)   # 每次读多少直接读完


#不用打开直接拷贝文件
f3_p = 'shave_test.py'
f4_p = 'shave_test_new.py'
shutil.copyfile(f3_p, f4_p)

#仅拷贝权限。内容、组、用户均不变
f5_p = 'shave_test.py'
f6_p = 'shave_test_new.py'
shutil.copymode(f5_p, f6_p)

#拷贝状态的信息,包括:mode bits, atime, mtime, flags
f7_p = 'shave_test.py'
f8_p = 'shave_test_new.py'
shutil.copymode(f7_p, f6_8)

# 拷贝文件和权限
src = 'shave_test.py'
dst = 'shave_test_new.py'
shutil.copy(src, dst)

#递归的去拷贝文件
src = 'packages'
dst = 'package2'
# shutil.copytree(src, dst, symlinks=False, ignore=None)
#ignore 可以忽略调某些文件
shutil.copytree(src, dst, symlinks=False, ignore=shutil.ignore_patterns('__init__.py'))
#递归的去删除文件
pth = 'package3'
shutil.rmtree(pth)

#递归的去移动文件
src = 'package4'
dst = 'package'
shutil.move(src, dst)  # 类似文件剪切,源路径不存在则报错


#创建压缩包并返回文件路径,例如:zip、tar
# 如:abc                        =>保存至当前路径
#     如:/Users/123/abc =>保存至/Users/123/
#     format: 压缩包种类,“zip”, “tar”, “bztar”,“gztar”
#     root_dir: 要压缩的文件夹路径(默认当前目录)
#     owner: 用户,默认当前用户
#     group: 组,默认当前组
#     logger: 用于记录日志,通常是logging.Logger对象
base_name = 'abc'
shutil.make_archive(base_name, 'zip', 'proj')  # 把proj文件压缩为abc.zip压缩包


import zipfile

# 压缩
z = zipfile.ZipFile('proj.zip', 'w')
z.write('__init__.py')
z.write('manage.py')
z.close()

# 解压
z = zipfile.ZipFile('proj.zip', 'r')
z.extractall('proj2')  # 设置解压路径
z.close()

import tarfile

# # 压缩(可递归式压缩)
tar = tarfile.open('your.tar', 'w')
tar.add("/Users/Administrator/OneDrive/python/python_21/第4课/proj")  # 递归式压缩,前面路径都生成了
# tar.add("/Users/Administrator/OneDrive/python/python_21/第4课/proj", arcname='proj1.zip') #只生成proj1.zip文件夹
tar.add("/Users/Administrator/OneDrive/python/python_21/第4课/manage.py", arcname='manage.zip')
# tar.close()

# 解压
tar = tarfile.open('your.tar', 'r')
tar.extractall('test2')  # 可设置解压地址
tar.close()
原文地址:https://www.cnblogs.com/AYxing/p/8666950.html