作用与功能

主要用于文件的copy,压缩,解压

导入shuitl模块:

import shutil

copy方法

 1、shutil.copyfileobj()  打开file1,并copy写入file2:
with open("笔记1",'r',encoding='utf-8') as f1,open('笔记2','w',encoding='utf-8') as f2:
   shutil.copyfileobj(f1,f2) #输入文件名就能直接拷贝(调用copyfileobj方法)
shutil.copyfile("笔记1","笔记3") #拷贝权限,内容,组,用户均不变:(win看不出来,linux下可以尝试)
shutil.copymode("笔记1","笔记3") #拷贝状态的信息(只拷贝权限,不创建文件),包括:mode bits,atime,mtime,flags
shutil.copystat("笔记1","笔记3") #拷贝文件和权限:
shutil.copy("笔记1","笔记3") #拷贝文件和状态信息:(文件和权限)
shutil.copy2("笔记1","笔记3") #递归的去copy文件:(copy目录)
shutil.copytree(r"D:\a",r"D:\a1")
例如:用python脚本实现代码发布指定线上服务器,例如svn和git在发布的时候,有些文件是不需要进行拷贝的,因袭就需要进行过滤
方法如下:
shutil.copytree('f1', 'f2', symlinks=True, ignore=shutil.ignore_patterns('*.pyc', 'tmp*')) #递归的删除目录:(有链接占中目录,删除报错)
shutil.rmtree(r"D:\a1") #移动文件:
shutil.move(r"D:\a",r"D:\a1")

压缩和解压缩方法

 1、全目压缩:
#创建压缩包,并返回文件路径:例如:zip tar
#创建压缩包并返回文件路径,例如:zip、tar
#格式:shutil.make_archive(base_name,format(zip),root_dir,owner,group,logger)
# base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,
# 如:www                       =>保存至当前路径
# 如:/Users/wupeiqi/www =>保存至/Users/wupeiqi/
# format: 压缩包种类,“zip”, “tar”, “bztar”,“gztar”
# root_dir: 要压缩的文件夹路径(默认当前目录)
# owner: 用户,默认当前用户
# group: 组,默认当前组
# logger: 用于记录日志,通常是logging.Logger对象
#将 /Users/wupeiqi/Downloads/test 下的文件打包放置当前程序目录 import shutil
ret = shutil.make_archive("wwwwwwwwww", 'gztar', root_dir='/Users/wupeiqi/Downloads/test')

#将 /Users/wupeiqi/Downloads/test 下的文件打包放置 /Users/wupeiqi/目录
import shutil
ret = shutil.make_archive("/Users/wupeiqi/wwwwwwwwww", 'gztar', root_dir='/Users/wupeiqi/Downloads/test')

#将D:\软件\pychar\data\s13\Atm目录下的文件打包放置在D:\软件\pychar\data\s13\Atm_name_tar文件下
shutil.make_archive(r"D:\软件\pychar\data\s13\Atm_name_tar","tar","D:\软件\pychar\data\s13\Atm") ==========================================================================
三、解压方法和指定文件的压缩和解压: 2、Zip单个文件压缩与解压:(打包在压缩)
(压缩包也可以当做一个文件,想要加入压缩文件的话可以直接写进压缩包里) 2.1:#写入指定压缩文件(w)
z = zipfile.ZipFile(r'D:\软件\pychar\data\test\node.zip', 'w')
z.write('笔记1')
z.write('笔记3')
z.close() 2.2 #追加指定压缩(a)
z = zipfile.ZipFile(r'D:\软件\pychar\data\test\node.zip', 'a')
z.write('test.py')
z.write('md_sys_test.py')
z.close() 2.3:z.extractall()   解压所有文件:(所有文件)
os.chdir(r"D:\软件\pychar\data\test")
z = zipfile.ZipFile("node.zip",'r')
z.extractall()  
z.close() 2.4:z.extract('test.py')  解压指定文件:
只需要传输字符串格式的文件名即可
os.chdir(r"D:\软件\pychar\data\test")
z = zipfile.ZipFile("node.zip",'r')
for item in z.namelist():
   if item == 'test.py':
       z.extract('test.py')
z.close() =============================================================================================
3、tar单个文件压缩与解压:(tar只打包不压缩)
3.1、写入指定压缩文件(w)
import tarfile

tar = tarfile.open(r'D:\软件\pychar\data\test\your.tar','w')
tar.add(r'D:\软件\pychar\data\test\test.py', arcname='bbs2.log')
tar.add(r'D:\软件\pychar\data\test\md_sys_test.py', arcname='cmdb.log')
tar.close() 3.2、添加指定压缩文件(a)
tar = tarfile.open(r'D:\软件\pychar\data\test\your.tar','a')
tar.add(r'D:\软件\pychar\data\test\笔记1', arcname='node1.txt')
tar.add(r'D:\软件\pychar\data\test\笔记3', arcname='node3.txt')
tar.close() 3.3、解压所有文件
os.chdir(r"D:\软件\pychar\data\test")
tar = tarfile.open('your.tar','r')
tar.extractall()  # 可设置解压地址
tar.close() 3.4、解压指定文件
tar.getmembers():遍币所有压缩包内的文件对象(非文件字符串)
tar.getmember("node1.txt"):指定压缩包内的某个文件
os.chdir(r"D:\软件\pychar\data\test")
tar = tarfile.open('your.tar','r')
for item in tar.getmembers():
   job = tar.getmember("node1.txt")
   if item == job:
       tar.extract(job)
tar.close()

模块讲解----shutil模块(copy、压缩、解压)的更多相关文章

  1. 模块 shutil_zipfile_tarfile压缩解压

    shutil_zipfile_tarfile压缩解压 shutil 模块 高级的 文件.文件夹.压缩包 处理模块 shutil.copyfileobj(fsrc, fdst[, length]) #将 ...

  2. python之模块之shutil模块

    shutil -- --High-level file operations  高级的文件操作模块. os模块提供了对目录或者文件的新建/删除/查看文件属性,还提供了对文件以及目录的路径操作.比如说: ...

  3. day5模块学习--shutil模块

    shutil模块 高级的 文件.文件夹.压缩包 处理模块 os模块提供了对目录或者文件的新建/删除/查看文件属性,还提供了对文件以及目录的路径操作.比如说:绝对路径,父目录……  但是,os文件的操作 ...

  4. python常用模块之shutil模块

    python常用模块之shutil模块 shutil模块,高级的文件.文件夹.压缩包处理模块 1.shutil.copyfile(src,des[,length]):将文件内容拷贝到另一个文件 In ...

  5. python入门之sys模块、shutil模块

    sys模块 import sys sys.version 返回python的版本 sys.argv 返回一个以脚本名,和传入的参数作为元素的列表 sys.path 返回一个以当前代码文件路径,pyth ...

  6. python对文件的压缩解压

    python自带的zipfile的模块支持对文件的压缩和解压操作 zipfilp.ZipFile 表示创建一个zip对象 zipfile.ZipFile(file[, mode[, compressi ...

  7. os模块和shutil模块

    # coding=utf-8 import os path="D:\\test" ######### 目录结构如下 # test # / \ \ \ # test01 test02 ...

  8. Java压缩/解压.zip、.tar.gz、.tar.bz2(支持中文)

    本文介绍Java压缩/解压.zip..tar.gz..tar.bz2的方式. 对于zip文件:使用java.util.zip.ZipEntry 和 java.util.zip.ZipFile,通过设置 ...

  9. [转]python中对文件、文件夹的操作——os模块和shutil模块常用说明

    转至:http://l90z11.blog.163.com/blog/static/187389042201312153318389/ python中对文件.文件夹的操作需要涉及到os模块和shuti ...

随机推荐

  1. Easyui Datagrid相同连续列合并扩展(二)

    JS: //合并相同数据的单元格 function MergeCells(seletor, rows, fields) { if(rows == null || rows.length == 0 || ...

  2. 阿里云ecs开启x11图形化桌面

    阿里云帮助文档:https://www.alibabacloud.com/help/zh/faq-detail/41227.htm 安装云服务器 ECS CentOS 7 图形化桌面 以安装 MATE ...

  3. java------守护线程与非守护线程

    最近重新研究Java基础知识,发现以前太多知识知识略略带过了,比较说Java的线程机制,在Java中有两类线程:User Thread(用户线程).Daemon Thread(守护线程) ,(PS:以 ...

  4. (转)Direct3d 设备丢失 (device lost)

    1.什么时候设备丢失 一个Direct3D设备, 有两种状态: 操作状态或丢失状态. 操作状态: 是设备的正常状态, 设备按预期运行, 并且能present所有渲染效果 丢失状态: 所有渲染操作悄然失 ...

  5. MathType中如何快速输入空心字母

    MathType输入数学公式时非常方便有效的,在文档中涉及到数学公式或者符号时都是使用MathType来进行的,因为它比Office自带的公式编辑器功能更为完善,使用起来更快捷.在数学公式中,在不同的 ...

  6. UNMET PEER DEPENDENCY @angular/common@2.3.1

    install of angular-cli results in unmeet peer dependencies. OSX 10.11.6node v6.9.1npm v3.10.8 [sudo] ...

  7. 六 Android Studio打包Eegret App (解决开机黑屏问题)

    因为android studio中的SplashActivity并没有什么卵用,只是开机1s显示开机画面,1s后面还是黑屏. 在主文件中加入以下代码,就是开始游戏时显示一个居中填满屏幕的图片,游戏加载 ...

  8. Struts入门(三)深入Struts用法讲解

    访问Servlet API Action搜索顺序 动态方法调用 指定多个配置文件 默认Action Struts 后缀 接收参数 处理结果类型 1.访问Servlet API 首先我们了解什么是Ser ...

  9. IT资料常用网址汇总

    菜鸟联盟: http://www.runoob.com/ w3c school :https://www.w3cschool.cn/ http://www.w3school.com.cn/w3c/in ...

  10. json序列化懒加载问题

    如果框架使用了json序列化对象,当配置了hibernate懒加载时,可能会抛出异常,或者出现N+1的问题,或者出现无限循环的问题.网上很多解决方案, 基本是这些:@JsonIgnore忽略可能出问题 ...