shutil模块
高级的文件、文件夹、压缩包处理模块
将文件内容拷贝到另一个文件
import shutil shutil.copyfileobj(open('wenjain','r'),open('new.wenjian','w'))
shutil.copyfile(src,dst)
拷贝文件
shutil.copyfile('f1.log','f2.log') #目标文件无需存在
shutil.copymode(src,dst)
仅拷贝权限。内容、组、用户均不变
shutil.copymode('f1.log','f2.log') ##目标文件必须存在
shutil.copystat(src,dst)
仅拷贝状态的信息,包括:mode bits,atime,mtime,flags
shutil.copystat('f1.log','f2.log') ##目标文件必须存在
shutil.copy(src,dst)
拷贝文件和权限
import shutil shutil.copy('f1.log','f2.log')
shutil.copy2(src,dst)
拷贝文件和状态信息
import shutil shutil.copy2('f1.log','f2.log')
shutil.ignore_patterns(*patterns)
shutil.copytree(src,dst,symlinks=False,ignore=None)
递归的去拷贝文件夹
import shutil shutil.copytree('folder1','folder2',ignore=shutil.ignore_patterns('*.pyc','tmp*'))#目标目录不能存在,注意对folder2目录父目录要求有可写权限,ignore 的意思是排除
1 import shutil 2 3 shutil.copytree('f1', 'f2', symlinks=True, ignore=shutil.ignore_patterns('*.pyc', 'tmp*')) 4 5 ''' 6 通常的拷贝都把软连接拷贝成硬链接,即对待软连接来说,创建新的文件 7 '''
shutil.rmtree(path[,ignore_errors[,onerror]])
递归的去删除文件
import shutil shutil.rmtree('folder1')
shutil.move(src,dst)
递归的去移动文件,它类似mv命令。其实就是重命名。
import shutil shutil.move('folder1','folder3')
shutil.make_archive(base_name,format,...)
创建压缩包并返回文件路径,例如:zip、tar
1、base_name:压缩包的文件名字,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则指定路径
如:data_bak ==》保存至当前路径
如:/tmp/data_bak =>保存至/tmp/
2、format:压缩包种类,“zip”,‘tar’,‘bztar’,‘gztar’
3、root_dir:要压缩的文件夹路径,(默认当前路径)
4、owner:用户,默认当前用户
5、group:组,默认当前组
6、logger:用于记录日志,通常是logger.Logger对象
1 1 #将 /data 下的文件打包放置当前程序目录 2 2 import shutil 3 3 ret = shutil.make_archive("data_bak", 'gztar', root_dir='/data') 4 4 5 5 6 6 #将 /data下的文件打包放置 /tmp/目录 7 7 import shutil 8 8 ret = shutil.make_archive("/tmp/data_bak", 'gztar', root_dir='/data')
shutil对压缩包的处理是调用ZipFile和TarFile两个模块来进行的,
1 import zipfile 2 3 # 压缩 4 z = zipfile.ZipFile('laxi.zip', 'w') 5 z.write('a.log') 6 z.write('data.data') 7 z.close() 8 9 # 解压 10 z = zipfile.ZipFile('laxi.zip', 'r') 11 z.extractall(path='.') 12 z.close()
1 import tarfile 2 3 # 压缩 4 >>> t=tarfile.open('/tmp/egon.tar','w') 5 >>> t.add('/test1/a.py',arcname='a.bak') 6 >>> t.add('/test1/b.py',arcname='b.bak') 7 >>> t.close() 8 9 10 # 解压 11 >>> t=tarfile.open('/tmp/egon.tar','r') 12 >>> t.extractall('/egon') 13 >>> t.close()

浙公网安备 33010602011771号