shutil复制粘贴和压缩
shutil
高级的文件、文件夹、压缩包处理模块
@1)、将文件内容拷贝到另一个文件中
import shutil shutil.copyfileobj(open("1.txt",'r'), open('2.txt','w'))
@2)、拷贝文件
import shutil shutil.copyfile('f1.log','f2.log')
@3)、仅拷贝权限。内容、组、用户不变
shutil.copymode('f1.log','f2.log')
@4)、拷贝状态的信息,包括:mode bits ,atime(文件防伪时间), mtime, flags
shutil.copystat('f1.log','f2.log')
@5)、 拷贝文件和权限
shutil.copy(src,dst) import shutil shutil.copy('f1.log', 'f2.log')
@6)、拷贝文件和状态信息
import shutil shutil.copy2('f1.log', 'f2.log')
@7)、递归的去拷贝文件夹
shutil.ignore_patterns(*patterns) shutil.copytree(src,dst, symlinks=False, ignoer=None) 案例: import shutil shutil.copytree('folder1', 'folder2', ignore=shutil.ignore_patterns("*.py", "tmp*")) #(ignore忽略)
@8)、递归的去删除文件
shutil.retree(path[,ignore_errors[,onerror]]) import shutil shutil.retree('folder1')
@9)、递归的去移动文件,它类似mv命令,其实就是重命令
import shutil shutil.move('folder1', 'folder3')
压缩和解压
@10)、shutil.make_archive(base_name, format,...)
创建压缩包并返回文件路径, 例如:zip, tar
a]· base_name :压缩包的文件名,也可以是压缩包路径。只是文件名时,则保持至当前目录,否则保存至指定路径 如:www -->保存至当前路径 如:/Users/local/www -->保存至/users/local b]. format:压缩包种类,"zip,tar,bztar,gztar" c]. root_dir :要压缩的文件夹路径(默认当前目录) d]. owner: 用户,默认当前用户 d]. group:组,默认当前组 e]. logger:用于记录日志,通常是logging.Logger对象
案例一:
压缩
#将/usr/local/lownloads/test下的文件打包放置当前程序目录
import shutil ret = shutil.make_archive("www", 'gztar', root_dir = "/usr/local/downloads/test") #将/usr/local/downsload/test 下的文件打包方放置在/usr/loca/目录 import shutil ret = shutil.make_archive("/usr/local/www", 'gztar', root_dir='usr/local/downsload/test')
f].shutil对压缩包的处理是调用ZipFile和TarFile两个模块来进行的,详细: import zipfile #压缩
z = zipfile.ZipFile('laxi.zip', 'w') z.write('a.log') z.write('data.data') z.close()
#解压
z = zipfile.ZipFile('lai.zip','r') z.extractall() z.close()
import tarfile
#压缩
tar = tarfile.open('your.tar','w') tar.add('/usr/local/pycharm/bbs2.log', arcname='bbs2.log') tar.add('/usr/local/pycharm/cmd.log', arcname='cmd.log') tar.close()
#解压
tar = tarfile.open('your.tar', 'r') tar.extractall() #可设置解压地址 tar.close()