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()
zipfile
 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()
tarfile

 

posted @ 2017-06-07 16:53  Sober--Never  阅读(66)  评论(0)    收藏  举报