作用与功能

主要用于文件的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. VS2013 连接 MySQL

    1.安装必须的工具: mysql-connector-net-6.8.3 mysql-installer-community-5.6.16.0.msi mysql-for-visualstudio-1 ...

  2. Xcode升级后插件失败解决方法

    大家都知道每次升级Xcode 然后插件都不能用了,最根本的原因是每一个插件都有个Info.plist文件,这个文件里有个key-DVTPlugInCompatibilityUUIDs记录了能够使用该插 ...

  3. (转)c++ new/delete,new[]/delete[]原理解析

    转自: 推荐:http://www.cnblogs.com/hazir/p/new_and_delete.html http://blog.csdn.net/crazyboyzzx/article/d ...

  4. elasticsearch性能因素总结

    一:硬件方面   在预算充足的情况下.特别是一些高并发业务的搜索.硬件层面占用整个elasticsearch性能空间很大比例. 1)内存: 单实例的情况下,尽量分配32G,排序和统计都是以及内存计算的 ...

  5. 应用开发之Asp.net

    本章简言 上一章中笔者讲到关于Linq和EF的用法.并以hibernate来进行讲解.那么本章笔者来讲一下C#的Asp.Net.即是在B/S模式下开发.现在企业大部分的业务都是面向B/S模式的.所以对 ...

  6. iOS各种问题处理

    本文转载至:http://www.cnblogs.com/ygm900/category/436923.html 推荐初学者前去学习.     mac 拷贝文件时报错 8060 解决方案 摘要: 解决 ...

  7. 将java项目发布到本地的linux虚拟机上

    1.首先安装虚拟机,这里就不介绍了. 2.然后要我下载了一个WinSCP用于windows和虚拟机之间的文件传输. 首先获得虚拟机的ip: 必须保持连接, 如果断开ip就是这样的 3.传输文件 将jd ...

  8. JqGrid 获取所有数据

    jqGrid使用本地数据时,当jqGrid配置的rowNum小于本地总数据量(records属性记录总数据,可以通过records获取到本地总数据量),调用getRowData方法获取到的只是显示的部 ...

  9. win10怎么关闭把管理员权限

    按住WIN+R 计算机配置----Windows设置----安全设置----本地策略----安全选项----用户账户控制:以管理员批准模式运行所有管理员,把启用改为禁止然后重启电脑

  10. D3D中的渲染状态简介

    1). 设置着色模式: SetRenderState(D3DRS_SHADEMODE, D3DSHADE_FLAT) //设置平面着色模式 SetRenderState(D3DRS_SHADEMODE ...