作用与功能

主要用于文件的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. TensorFlow基础笔记(6) 图像风格化实验

    参考 http://blog.csdn.net/wspba/article/details/53994649 https://www.ctolib.com/AdaIN-style.html Ackno ...

  2. 有用的Python代码片段

    我列出的这些有用的Python代码片段,为我节省了大量的时间,并且我希望他们也能为你节省一些时间.大多数的这些片段出自寻找解决方案,查找博客和StackOverflow解决类似问题的答案.下面所有的代 ...

  3. 深入.net调用webservice的总结分析

    最近做一个项目,由于是在别人框架里开发app,导致了很多限制,其中一个就是不能直接引用webservice .我们都知道,调用webserivice 最简单的方法就是在 "引用"  ...

  4. 怎么绘制旋转Chem3D模型

    化学领域的专业人士常常需要绘制各种化学图形,特别是3D的图形,这个就需要用到一些化学绘图软件.Chem3D是ChemOffice的核心组件之一,可以绘制化学三维模型,包括新建.删除.旋转.移动等基础编 ...

  5. iOS开发之-- 从当前隐藏导航界面push到下一个显示导航界面出现闪一下的问题

    在修改项目代码的过程中,遇到一个问题,就是比如主页面的导航栏是隐藏的,但是需要push到别的页面,这个时候,会出现导航栏闪一下的情况, 下面是我写的一种方案,也就是在loadView这个生命周期函数中 ...

  6. C#,C++Dll文件调用心得

    C#下: 1.新建-->项目-->控制台应用程序:填写各种名称之后项目新建成功:一下为默认生成方式. 2.如下,在Program.cs中添加如下代码: using System;using ...

  7. 如何正确设置 Informix GLS 及 CSDK 语言环境

    本文介绍 GLS 相关知识,说明如何正确设置 Informix GLS 语言环境相关变量(DB_LOCALE,CLIENT_LOCALE),保证 Informix 数据库服务器.客户端能正确的支持中文 ...

  8. c++多线程例(互斥体,共同访问)

    <pre name="code" class="cpp">//这是2个线程模拟卖火车票的小程序 #include <windows.h> ...

  9. ajax请求加全局loading , 个别特殊请求不显示loading

    项目中,请求开始前加载loading遮罩层,请求结束关闭遮罩,一般都会加在全局中,但有个别请求不需要加全局loading 的话,这时候就需要对这些请求进行配置 全局加loading: ; functi ...

  10. 修改DedeCMS图片上传路径命名规则的具体方法步骤

    收藏到:0时间:2013-08-23   文章来源:马海祥博客   访问次数:2350 最近在整理网站根目录下文件的时候,发现马海祥博客网站已经有上千个文件夹了,其中光图片文件夹就占了近一半.这个主要 ...