- 导入模块:
import shutil
- copy()
功能:复制文件
格式:shutil.copy('来源文件','目标地址')
返回值:复制之后的路径
拷贝文件和权限
- copy2()
功能:复制文件,保留元数据
格式:shutil.copy2('来源文件','目标地址')
返回值:复制之后的路径
拷贝文件和状态信息
- copyfileobj()
将一个文件的内容拷贝的另外一个文件当中
格式:shutil.copyfileobj(open(来源文件,'r'),open('目标文件','w'))
返回值:无
- copyfile()
功能:将一个文件的内容拷贝的另外一个文件当中
格式:shutil.copyfile(来源文件,目标文件)
返回值:目标文件的路径
(copyfile只拷贝文件内容)
- copytree()
功能:复制整个文件目录
格式:shutil.copytree(来源目录,目标目录)
返回值:目标目录的路径
注意:无论文件夹是否为空,均可以复制,而且会复制文件夹中的所有内容
# 后面的目标路径必须没有,否则报错,ignore 后的shutil.ignore_patterns()中的参数用正则表达式
- copymode()
copymode(src, dst)
功能:拷贝权限
(前提是dst文件存在,不然报错)
- copystat()
功能:拷贝元数据(状态)
- rmtree()
功能:移除整个目录,无论是否空
格式:shutil.rmtree(目录路径)
返回值:无
注意:#删除时包括外层的文件夹
- move()
功能:移动文件或者文件夹
格式:shutil.move(来源地址,目标地址)
返回值:目标地址
which() 功能:检测命令对应的文件路径 格式:shutil.which(‘命令字符串’) 返回值:命令文件所在位置 注意:window和linux不太一样。 window的命令都是.exe结尾,linux则不是 disk_usage()
功能:检测磁盘使用信息
格式:disk_usage(‘盘符’)
返回值:元组
归档和解包操作
归档:将多个文件合并到一个文件当中,这种操作方式就是归档。
解包:将归档的文件进行释放。
压缩:压缩时将多个文件进行有损或者无损的合并到一个文件当中。
解压缩:就是压缩的反向操作,将压缩文件中的多个文件,释放出来。
注意:压缩属于归档!
- make_archive()
功能:归档函数,归档操作
格式:shutil.make_archive('目标文件路径','归档文件后缀','需要归档的目录')
返回值:归档文件的最终路径
注意:要压缩的文件夹路径的最后一个是压缩后的文件名称 root_dir是要压缩的文件路径
- unpack_archive()
功能:解包操作
格式:shutil.unpack_archive('归档文件路径','解包目标文件夹')
返回值:None
注意:文件夹不存在会新建文件夹
# 可以重复多次解包 (解压)
- get_archive_formats()
功能:获取当前系统已注册的归档文件格式(后缀)
格式:shutil.get_archive_formats()
返回值:列表 [(后缀,解释),(后缀,解释),(后缀,解释)...]
- get_unpack_formats()
功能:获取当前系统已经注册的解包文件格式(后缀)
格式:shutil.get_unpack_formats()
返回值:列表 [(后缀,解释),(后缀,解释),(后缀,解释)...]
EG1:
import shutil
shutil.copyfileobj(open("E:\\001.txt", "r"), open("E:\\002.txt", "w"))
shutil.copyfile("E:\\001.txt", "E:\\002.txt")
shutil.copy2("E:\\001.txt", "E:\\002.txt")
shutil.copymode("E:\\001.txt", "E:\\002.txt")
shutil.copystat("E:\\001.txt", "E:\\002.txt")
# 后面的目标路径必须没有,否则报错,ignore 后的shutil.ignore_patterns()中的参数用正则表达式
shutil.copytree("E:\\099","E:\\098\\",ignore=shutil.ignore_patterns("*.py"))
#包括外层的文件夹
shutil.rmtree("E:\\098\\")
shutil.move("E:\\100\\","E:\\098\\")
# 要压缩的文件夹路径的最后一个是压缩后的文件名称 root_dir是要压缩的文件路径
shutil.make_archive("D:\\001", "zip", root_dir="E:\\099\\")
# 可以重复多次解包 (解压)
shutil.unpack_archive("D:\\001.zip",extract_dir="D:\\001" )
print(shutil.get_archive_formats())
print(shutil.get_unpack_formats())
print(shutil.disk_usage('d:'))
print(shutil.get_archive_formats())
print(shutil.get_unpack_formats())
执行结果:
[('bztar', "bzip2'ed tar-file"), ('gztar', "gzip'ed tar-file"), ('tar', 'uncompressed tar file'), ('xztar', "xz'ed tar-file"), ('zip', 'ZIP file')]
[('bztar', ['.tar.bz2', '.tbz2'], "bzip2'ed tar-file"), ('gztar', ['.tar.gz', '.tgz'], "gzip'ed tar-file"), ('tar', ['.tar'], 'uncompressed tar file'), ('xztar', ['.tar.xz', '.txz'], "xz'ed tar-file"), ('zip', ['.zip'], 'ZIP file')]
usage(total=212601925632, used=157784317952, free=54817607680)
[('bztar', "bzip2'ed tar-file"), ('gztar', "gzip'ed tar-file"), ('tar', 'uncompressed tar file'), ('xztar', "xz'ed tar-file"), ('zip', 'ZIP file')]
[('bztar', ['.tar.bz2', '.tbz2'], "bzip2'ed tar-file"), ('gztar', ['.tar.gz', '.tgz'], "gzip'ed tar-file"), ('tar', ['.tar'], 'uncompressed tar file'), ('xztar', ['.tar.xz', '.txz'], "xz'ed tar-file"), ('zip', ['.zip'], 'ZIP file')]