shutil模块---文件,文件夹复制、删除、压缩等处理

shutil模块:高级的文件,文件夹,压缩包处理

拷贝内容

# shutil.copyfileobj(open('example.ini','r'),open('example.new','w')) #目标文件无需存在

拷贝文件

# shutil.copyfile('example.ini','example-new.ini') #copyfile 拷贝文件,目标文件无需存在
#shutil.copy()拷贝文件和权限

递归拷贝文件夹

#递归的取拷贝文件夹,相当于cp -r,
#主要目标目录不能存在,对folder2的父目录要又写权限,ignore是排除某些文件
# shutil.copytree('folder1','folder2',ignore=shutil.ignore_patterns('*.pyc','tmp*'))

递归的删除文件

shutil.rmtree(path[, ignore_errors[, onerror]])

shutil.rmtree('folder1')

递归的移动文件,相当于重命名

shutil.move(src, dst)

shutil.move('folder1', 'folder3')

压缩命令

shutil.make_archive(base_name, format,...)

创建压缩包并返回文件路径,例如:zip、tar

创建压缩包并返回文件路径,例如:zip、tar

    • base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,
      如 data_bak                       =>保存至当前路径
      如:/tmp/data_bak =>保存至/tmp/
    • format: 压缩包种类,“zip”, “tar”, “bztar”,“gztar”
    • root_dir: 要压缩的文件夹路径(默认当前目录)
    • owner: 用户,默认当前用户
    • group: 组,默认当前组
    • logger: 用于记录日志,通常是logging.Logger对象
1 #将 /data 下的文件打包放置当前程序目录
2 import shutil
3 ret = shutil.make_archive("data_bak", 'gztar', root_dir='/data')
4   
5   
6 #将 /data下的文件打包放置 /tmp/目录
7 import shutil
8 ret = shutil.make_archive("/tmp/data_bak", 'gztar', root_dir='/data') 

解压缩

import zipfile

# 压缩
z = zipfile.ZipFile('laxi.zip', 'w')
z.write('a.log')
z.write('data.data')
z.close()

# 解压
z = zipfile.ZipFile('laxi.zip', 'r')
z.extractall(path='.')
z.close()
zipfile压缩解压缩
import tarfile

# 压缩
>>> t=tarfile.open('/tmp/egon.tar','w')
>>> t.add('/test1/a.py',arcname='a.bak')
>>> t.add('/test1/b.py',arcname='b.bak')
>>> t.close()


# 解压
>>> t=tarfile.open('/tmp/egon.tar','r')
>>> t.extractall('/egon')
>>> t.close()
tarfile的压缩与解压缩

猜你喜欢

转载自www.cnblogs.com/mmyy-blog/p/9298779.html
今日推荐