python-shutil模块拥有许多文件(夹)操作的功能,包括复制、移动、重命名、删除等等
import shutil
shuil.copyfile(open('aa.pe','r',encoding='utf-8'),open('as.py','w',encoding='utf-8')) #拷贝文件,可以自己指定模式和编码方式
shuil.copyfile(r'D:\as.py','f2.log') 拷贝文件,第一个参数放一个源文件,第二参数放一个要拷贝到那个文件的名字,编码方式默认为utf-8
shutil.copymode('f1.log', 'f2.log') #目标文件必须存在 #仅拷贝权限。内容,组,用户均不变
shutil.copystat('f1.log', 'f2.log') #目标文件必须存在 #仅拷贝状态的信息,包括:mode bits ,atime,mtime,flags
shutil.copy2('f1.log', 'f2.log') #拷贝文件和权限
shutil.copytree('folder1', 'folder2', ignore=shutil.ignore_patterns('*.pyc', 'tmp*')) #目标目录不能存在,注意对folder2目录父级目录要有可写权限,ignore的意思是排除 #递归的去拷贝文件夹
shutil.rmtree('folder1') #递归的去删除文件,无论有无文件,都删除(危险操作,请勿尝试)
shutil.move('folder1', 'folder3') #递归的去移动文件
创建压缩包并返回文件路径, 例如:zip , tar
base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,
如 data_bak =>保存至当前路径
如:/tmp/data_bak =>保存至/tmp/
format: 压缩包种类,“zip”, “tar”, “bztar”,“gztar”
root_dir: 要压缩的文件夹路径(默认当前目录)
owner: 用户,默认当前用户
group: 组,默认当前组
logger: 用于记录日志,通常是logging.Logger对象
#将 /data 下的文件打包放置当前程序目录
import shutil
ret = shutil.make_archive("data_bak", 'gztar', root_dir='/data')
#将 /data下的文件打包放置 /tmp/目录
import shutil
ret = shutil.make_archive("/tmp/data_bak", 'gztar', root_dir='/data')
zipfile 压缩解压缩
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()
tarfile压缩解压缩
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('/meet')
t.close()