shutil模块
主要用于文件复制相关内容,文件夹归档操作。
1 2 3 4 5 6 7 8 格式:copy(src, dst),返回值:目标文件地址 参数:src 文件来源路径,dst 文件目标路径 import shutilresult = shutil.copy('C:\\Users\\xdl\\Desktop\\demo.txt' ,'C:\\test' ) print (result)
复制文件,保留原有文件的信息(操作时间和权限等)
1 2 3 4 5 格式:copy2(src, dst),返回值:目标文件地址 参数:src 文件来源路径,dst 文件目标路径 result = shutil.copy2('C:\\Users\\xdl\\Desktop\\demo.txt' ,'C:\\test' ) print (result)
复制文件内容(打开文件值之后读取内容 ,在新建文件复制进去)
1 2 3 4 5 格式:copyfile(src,dst),返回值:目标文件地址 参数:src 文件来源路径,dst 文件目标路径 result = shutil.copyfile('C:\\Users\\xdl\\Desktop\\demo.txt' ,'C:\\test\\mydemo.txt' ) print (result)
复制文件内容,灵活性更高,可以决定复制文件的方式
1 2 3 4 5 6 7 8 格式:copyfileobj(fsrc,fdst),返回值:None 参数:fsrc 打开为来源文件指针,fdst 打开目标文件的指针 fsrc = open ('C:\\Users\\xdl\\Desktop\\demo.txt' ,'r' ) fdst = open ('c:\\test\\yourdemo.txt' ,'a' ) result = shutil.copyfileobj(fsrc,fdst) print (result)
1 2 3 4 5 格式:copystat(src,dst),返回值:None 参数:src 文件来源路径,dst 文件目标路径 result = shutil.copystat('C:\\Users\\xdl\\Desktop\\demo.txt' ,'c:\\test\\yourdemo.txt' ) print (result)
copymode() 拷贝文件权限(尽量在linux下操作)
1 2 3 4 5 格式:copymode(src,dst),返回值:None 参数:src 文件来源路径,dst 文件目标路径 result = shutil.copymode('C:\\Users\\xdl\\Desktop\\demo.txt' ,'c:\\test\\yourdemo.txt' ) print (result)
1 2 3 4 5 格式:copytree(src,dst),返回值:目标地址路径 参数:src 来源文件夹,dst 目标文件夹 result = shutil.copytree('C:\\Users\\xdl\\PycharmProjects\\python_05' ,'C:\\Users\\xdl\\Desktop\\python_05' ) print (result)
1 2 3 4 5 格式:rmtree(path),返回值:None 参数:path 要删除的文件夹路径 result = shutil.rmtree('C:\\Users\\xdl\\Desktop\\python_05' ) print (result)
移动文件或者文件夹/剪切操作(修改文件和文件夹名称也可以使用该函数!)
1 2 3 4 5 6 7 8 格式:move(src,dst),返回值:目标路径 参数:src 来源路径,dst 目标路径 result = shutil.move('C:\\Users\\xdl\\Desktop\\demo.txt' ,'C:\\test' ) result = shutil.move('C:\\test2' ,'C:\\test' ) print (result)shutil.move('C:\\test' ,'C:\\test_demo' )
chown()更改文件的所有者
which()查找命令文件所在的路径
1 2 3 4 格式:which(命令名称) result = shutil.which('calc' ) print (result)
1 2 3 4 格式:disk_usage('盘符' ) result = shutil.disk_usage('c:' ) print (result)
归档操作
1 2 3 4 5 6 7 8 归档:将一个【文件夹】中的所有内容转换成一个文件(压缩文件)。主要是用于方便文件的转移或者发送 归档的反操作:解包 格式:make_archive(base_name, format, root_dir=None, base_dir=None, verbose=0, dry_run=0, owner=None, group=None, logger=None) 参数:base_name 当前需要创建的归档文件的路径和名称(没有文件后缀部分) format 设置归档文件的后缀(zip和tar) root_dir 设置需要归档的文件夹根目录 返回值:归档文件的路径
1 2 3 4 5 6 7 8 9 10 11 12 13 result = shutil.make_archive('C:\\Users\\xdl\\Desktop\\gd' ,'zip' ,'C:\\test_demo' ) print (result)result = shutil.get_archive_formats() print (result)[(文件格式名称,介绍) ('bztar' , "bzip2'ed tar-file" ), ('gztar' , "gzip'ed tar-file" ), ('tar' , 'uncompressed tar file' ), ('xztar' , "xz'ed tar-file" ), ('zip' , 'ZIP file' )]
解包操作
1 2 3 4 5 6 7 压缩:将【多个文件】使用或者不使用压缩算法,添加到一个压缩文件中的操作。 压缩的反操作:解压缩 格式:unpack_archive(filename, extract_dir=None, format=None) 参数:filename 归档文件的路径 extract_dir 解包的路径 默认当前文件夹 返回值:None
1 2 3 4 5 6 7 8 9 10 11 12 13 result = shutil.unpack_archive('C:\\Users\\xdl\\Desktop\gd.zip' ,'C:\\Users\\xdl\\Desktop' ) print (result)result = shutil.get_unpack_formats() print (result)[(格式类型名称,对应的文件后缀,说明信息哦) ('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' )]
1 2 3 4 5 linesep 获取系统的换行符号 window \r\n linux \n macos 10.9 ->\r 10.10->\n print(repr(os.linesep))
zip压缩
1 2 3 4 5 6 7 8 9 10 11 12 13 14 import zipfilezp = zipfile.ZipFile('C:\\Users\\xdl\\Desktop\\py04.zip' ,'w' ,zipfile.ZIP_DEFLATED) zp.write('D:\\FeiQ.exe' ,'fq.exe' ) zp.write('D:\\format.pdf' ,'fm.pdf' ) zp.write('D:\\jsq.py' ,'mycalc\\jsq.py' ) zp.close()
1 2 3 4 5 6 7 8 9 10 11 12 13 zp = zipfile.ZipFile('C:\\Users\\xdl\\Desktop\\py04.zip' ,'r' ) zp.extractall('D:\\test' ,['mycalc/jsq.py' ,'fm.pdf' ]) zp.close()
tar压缩
1 2 3 4 5 6 7 8 9 10 11 import tarfiletp = tarfile.open ('C:\\Users\\xdl\\Desktop\\py04.tar' ,'w:bz2' ) tp.add('D:\\FeiQ.exe' ,'fq.exe' ) tp.add('D:\\format.pdf' ,'fm.pdf' ) tp.add('D:\\jsq.py' ,'calc\\jsq1.py' ) tp.close()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 tp = tarfile.open ('C:\\Users\\xdl\\Desktop\\py04.tar' ,'r' ) tp.extractall('C:\\Users\\xdl\\Desktop\\py04' ) tp.extract('fq.exe' ,'C:\\Users\\xdl\\Desktop' ) lists = tp.getmembers() tp.extractall('C:\\Users\\xdl\\Desktop\\py04' ,lists[0 :2 ]) tp.close()