码迷,mamicode.com
首页 > 其他好文 > 详细

shutil模块

时间:2017-07-16 23:30:40      阅读:327      评论:0      收藏:0      [点我收藏+]

标签:mtime   pen   文件拷贝   文件夹   3.5   对象   日志   python   arm   

对文件进行copy、还可以压缩包

文件copy

1)shutil.copyfileobj(fsrc, fdst[, length])

将文件内容拷贝到另一个文件中,需要打开文件,fsrc,fdst是2个文件的文件句柄

1 import shutil
2 with open("old_file",encoding = "utf-8") as f1,3     open("new_file","w",encoding = "utf-8") as f2:
4     shutil.copyfileobj(f1,f2)

2)shutil.copyfile(src, dst)

从一个文件拷贝到另一个文件,不需要打开文件这样的操作,src,dst 是2个文件的文件名

1 shutil.copyfile("old_file","new_file3")

3)shutil.copymode(src, dst)  ??

仅拷贝权限。内容、组、用户均不变  

[root@whtest137 ~]# ll
total 8
-rwxr-xr-x 1 root   root   0 Apr  1 16:05 zhangqigao   #有执行权限
-rw-r--r-- 1 whtest whtest 0 Apr  1 16:06 zhangqigao_old  #没有执行权限
>>> import os,shutil
>>> os.chdir("/root")
#拷贝"zhangqigao_old"权限给"zhangqigao"
>>> shutil.copymode("zhangqigao_old","zhangqigao") 
[root@whtest137 ~]# ll
total 8
-rw-r--r-- 1 root   root   0 Apr  1 16:05 zhangqigao  # 获得跟"zhangqigao_old"一样的文件权限
-rw-r--r-- 1 whtest whtest 0 Apr  1 16:06 zhangqigao_old

4)shutil.copystat(src, dst) ??

拷贝状态的信息,包括:mode bits, atime, mtime, flags

 

5)shutil.copy(src, dst)

拷贝文件和权限

 1 #拷贝前
 2 [root@jenkins_sh temp]# ll
 3 total 0
 4 -rwxr-xr-x 1 jenkins jenkins 0 Apr  1 16:26 zhangqigao_old
 5 #拷贝中
 6 >>> import os,shutil
 7 >>> os.chdir("/temp")
 8 >>> shutil.copy("zhangqigao_old","zhangqigao")
 9 #拷贝结果输出
10 [root@jenkins_sh temp]# ll
11 total 0
12 -rwxr-xr-x 1 root    root    0 Apr  1 17:42 zhangqigao  #拷贝了zhangqigao_old文件和文件权限
13 -rwxr-xr-x 1 jenkins jenkins 0 Apr  1 16:26 zhangqigao_old

6)shutil.copy2(src, dst)

功能:拷贝文件和文件的状态

 1 #拷贝前
 2 [root@jenkins_sh temp]# ll
 3 total 0
 4 -rwxr-xr-x 1 jenkins jenkins 0 Apr  1 16:26 zhangqigao_old
 5 #拷贝中
 6 >>> import os,shutil
 7 >>> os.chdir("/temp")
 8 >>> shutil.copy2("zhangqigao_old","zhangqigao")
 9 #拷贝后
10 [root@jenkins_sh temp]# ll
11 total 0
12 -rwxr-xr-x 1 root    root    0 Apr  1 16:26 zhangqigao  #拷贝了zhangqigao_old的文件和状态
13 -rwxr-xr-x 1 jenkins jenkins 0 Apr  1 16:26 zhangqigao_old

7)shutil.copytree(src, dst, symlinks=False, ignore=None)

递归的去拷贝文件,将文件1递归拷贝到文件2

1 shutil.copytree("a","b")

技术分享

 

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

递归删除文件目录,会删除空文件 

1 shutil.rmtree("b")

技术分享

 

 

 文件打包

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

  • 创建压缩包并返回文件路径,例如:zip、tar
  • base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,
  • 如:www                        =>保存至当前路径
  • 如:/Users/wupeiqi/www =>保存至/Users/wupeiqi/
  • format: 压缩包种类,“zip”, “tar”, “bztar”,“gztar”
  • root_dir: 要压缩的文件夹路径(默认当前目录)
  • owner: 用户,默认当前用户
  • group: 组,默认当前组
  • logger: 用于记录日志,通常是logging.Logger对象
1 shutil.make_archive("wwwwww","gztar","E:\python_3.5\second\json模块")

技术分享

 

2)zipfile 

shutil 对压缩包的处理是调用 ZipFile 和 TarFile 两个模块来进行的

 

功能:以zip的形式压缩文件,注意了这个只能压缩文件,不能压缩目录,如果压缩,也只能显示空目录。

压缩

import zipfile
z = zipfile.ZipFile("json模块.zip","w")
z.write("new_file")
z.write("shutil模块.py")

z.close()

技术分享

解压

1 z = zipfile.ZipFile(json模块.zip, r)
2 z.extractall()
3 z.close()

3、tarfile

 1 import tarfile
 2 
 3 # 压缩
 4 tar = tarfile.open(your.tar,w)
 5 tar.add(/Users/wupeiqi/PycharmProjects/bbs2.zip, arcname=bbs2.zip)
 6 tar.add(/Users/wupeiqi/PycharmProjects/cmdb.zip, arcname=cmdb.zip)
 7 tar.close()
 8 
 9 # 解压
10 tar = tarfile.open(your.tar,r)
11 tar.extractall()  # 可设置解压地址
12 tar.close()
13 
14 tarfile 压缩解压

 

shutil模块

标签:mtime   pen   文件拷贝   文件夹   3.5   对象   日志   python   arm   

原文地址:http://www.cnblogs.com/wengxq/p/7003599.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!