shutil的功能介绍及其他打包、压缩模块

1. shutil模块的方法

  1. chown

更改指定路径的属组 2. copy

拷贝文件和权限

    方法:shutil.copy(src,dst,*,follow_symlinks=True)
返回值:str
#拷贝源文件到目标文件,权限和内容都将拷贝,但是属组和属主不拷贝,如果不指定文件名,则目录不同时则进行复制相同文件名,返回值为目标文件路径
  1. copy2

    拷贝文件和状态

    方法:shutil.copy2(src,dst,*,follow_symlinks=True)
    返回值:str
    #该方法在copy方法的基础上把文件的最后访问和修改时间也拷贝了,当然创建时间是当前的时间。
  2. copyfile

    拷贝文件内容

    方法:shutil.copyfile(src,dst,*,follow_symlinks=True)
    返回值:str
    #该方法只拷贝文件内容,如果目录不同必须要指定文件名
  3. copyfileobj

    拷贝文件内容字符串

    方法:shutil.copyfileobj(fsrc,fdst,*,length=16384)
    返回值:None
    例如:f1 = open('file1')
    f2 = open('file2','w')
    shutil.copyfileobj(f1,f2)
    f1.close()
    f2.close()
    #该方法是把文件对象作为参数传入进行拷贝文件内容,被写入的文件要有写入的权限。
  4. copymode

    拷贝权限

    方法:shutil.copymode(src,dst,*,follow_symlinks=True)
    返回值:None
    #该方法只复制文件的权限,属组属主和文件内容都不拷贝,如果目标文件不存在将报错。
  5. copystat

    拷贝权限和状态

    方法:shutil. copystat(src, dst, *, follow_symlinks=True)
    返回值:None
    #该方法只复制文件的权限和状态,相对于copymode多拷贝了一个最后修改时间和最后访问时间。
  6. copytree

    递归拷贝

    方法:shutil.copytree(src, dst, symlinks=False, ignore=None, copy_function=<function copy2 at 0x0000000001171488>, ignore_dangling_symlinks=False)
    返回值:str
    #递归的拷贝路径,当目标路径存在时,将报错,返回结果为目标路径
  7. disk_usage

    指定盘符使用情况

    方法:shutil.disk_usage(path)
    返回值:shutil.usage
    例如:print(shutil.disk_usage('d:'))
    >>> usage(total=45942304768, used=15426473984, free=30515830784)
    #把指定盘符总容量和已使用和剩余大小(按字节算)以元祖的形式返回,当指定路径为该盘符下的目录时,效果一样。
  8. getarchiveformats

    压缩类型整理

    方法:shutil.get_archive_formats()
    返回值:list
    例如:print(shutil.get_archive_formats())
    >>> [('bztar', "bzip2'ed tar-file"), ('gztar', "gzip'ed tar-file"), ('tar', 'uncompressed tar file'), ('xztar', "xz'ed tar-file"), ('zip', 'ZIPfile')]
    #该方法把压缩整理成列表,列表中每个元祖的第一个元素为压缩的后缀名,第二个元素为使用的压缩格式。
  9. getterminalsize

    获取终端的大小

    方法:shutil.get_terminal_size(fallback=(80,24))
    返回值:os.terminal_size
    例如:print(shutil.get_terminal_size())
    >>> os.terminal_size(columns=140, lines=38)
    #获取当前终端窗口的宽度和高度
  10. getunpackformats

    解压缩类型

    方法:shutil.get_unpack_formats()
    返回值:list
    #该方法和get_archive_formats方法相反,列表中元祖的元素为解压的名称,扩展名和描述信息。
  11. ignore_partterns
  12. make_archive

    创建压缩包并返回路径

    方法:shutil.make_archive(base_name, format, root_dir=None, base_dir=None, verbose=0, dry_run=0, owner=None, group=None, logger=None)
    返回值:str
    例如:print(shutil.make_archive('12.txt','gztar'))
    >>> '12.txt.tar.gz'
    #base_name为被压缩的路径,format为压缩格式,一般有'tar','zip'等,具体可以参考get_archive_formats方法,root_dir指定压缩包存放路径,默认当前路径,owner属主,默认当前用户,group属组,默认当前属组,logger用于记录日志,同常为logging.Logger对象。
  13. move

    移动文件

    方法:shutil.move(src,dst)
    返回值:str
    #把文件移动到其他路径,当路径一样时则为重命名,文件的所有信息都将被保留,例如:属主、属组、状态及权限等信息。
  14. registerarchiveformat
  15. rmtree

    递归删除文件及目录

    方法:shutil.remtree(path,ignore_errors=False,onerror=None)
    返回值:None
    #递归删除路径
  16. unpack_archive
  17. unregisterarchiveformat
  18. unregisterunpackformat
  19. which

    获取命令的路径

    方法:shutil.which(cmd,mode=1,path=None)
    返回值:str
    例如:print(shutil.which('ipconfig'))
    >>> 'C:\\windows\\system32\\ipconfig.EXE'
    #该方法用于查找命令的路径。

    注:shutil对压缩包的处理是调用zipfile和tarfile两个模块来进行的。

2. zipfile模块

1. 压缩

方法:z = zipfile.ZipFile(file, mode="r", compression=ZIP_STORED, allowZip64=True)
z.write(self, filename, arcname=None, compress_type=None)
例如:
f = zipfile.ZipFile('file1.zip','w')
f = write('123.txt')
f.close()
#可以指定压缩包存放目录,但需要用‘w’模块打开压缩包,然后可以随意添加文件,最后关闭压缩包。被压缩的文件不会被移动。

2. 解压

方法:z = zipfile.ZipFile(file, mode="r", compression=ZIP_STORED, allowZip64=True)
z.extract(self, member, path=None, pwd=None)#单个解压
z.extractall(self, path=None, members=None, pwd=None)#全部解压
例如:
f = zipfile.ZipFile('file1.zip','r')
f.extractall()
f.close()
#解压压缩包时,打开压缩包需要用‘r’读模式,可以指定解压后的路径,一次性全部解压,最后关闭压缩包。

3. tarfile模块

1. 压缩

方法:t = tar.open(name=None, mode='r', fileobj=None, bufsize=10240, **kwargs)
t.add(self, name, arcname=None, recursive=True, exclude=None, *, filter=None)
例如:t = tar.open('file1.tar','w')
t.add('14.txt')
t.close()

2. 解压

方法:t = tar.open(name=None, mode='r', fileobj=None, bufsize=10240, **kwargs)
t.extract(self, member, path='', set_attrs=True, *, numeric_owner=False)
t.extractall(self, path='.', members=None, *, numeric_owner=False)
例如:t = tar.open('file1.tar','r')
t.extractall()
t.close()
#该方法与zipfile模块的压缩与解压方法类似。

Python中模块之shutil及zipfile&tarfile的功能介绍的更多相关文章

  1. Python中os和shutil模块实用方法集…

    Python中os和shutil模块实用方法集锦 类型:转载 时间:2014-05-13 这篇文章主要介绍了Python中os和shutil模块实用方法集锦,需要的朋友可以参考下 复制代码代码如下: ...

  2. Python中os和shutil模块实用方法集锦

    Python中os和shutil模块实用方法集锦 类型:转载 时间:2014-05-13 这篇文章主要介绍了Python中os和shutil模块实用方法集锦,需要的朋友可以参考下 复制代码代码如下: ...

  3. python常用模块之shutil模块

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

  4. Python中模块之os的功能介绍

    Python中模块之os的功能介绍 1. os的变量 path 模块路径 方法:os.path 返回值:module 例如:print(os.path) >>> <module ...

  5. 查看python中模块的所有方法

    查看python中模块的所有方法     安装的python模块,现将查看方法总结如下 一.CMD命令行下使用pydoc命令 在命令行下运行$ pydoc modules即可查看 二.在python交 ...

  6. [python]关于在python中模块导入问题追加总结

    [背景] 最近在写程序时,我使用的eclipse编辑器运行都没有问题,然后部署到自动化环境上却偏偏报找不到相应模块问题,现在对该问题在之前的贴子上追加总结 原帖子:[python]关于python中模 ...

  7. [笔记]Python中模块互相调用的例子

    python中模块互相调用容易出错,经常是在本地路径下工作正常,切换到其他路径来调用,就各种模块找不到了. 解决方法是通过__file__定位当前文件的真实路径,再通过sys.path.append( ...

  8. Python中利用函数装饰器实现备忘功能

    Python中利用函数装饰器实现备忘功能 这篇文章主要介绍了Python中利用函数装饰器实现备忘功能,同时还降到了利用装饰器来检查函数的递归.确保参数传递的正确,需要的朋友可以参考下   " ...

  9. python之模块之shutil模块

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

随机推荐

  1. Collaborative Filtering(协同过滤)算法详解

    基本思想 基于用户的协同过滤算法是通过用户的历史行为数据发现用户对商品或内容的喜欢(如商品购买,收藏,内容评论或分享),并对这些喜好进行度量和打分.根据不同用户对相同商品或内容的态度和偏好程度计算用户 ...

  2. GIT入门笔记(15)- 链接到私有GitLab仓库

    GitLab是利用 Ruby on Rails 一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目.它拥有与Github类似的功能,能够浏览源代码,管理 ...

  3. BBS的登陆——发帖——回帖

    整体分析思路 1.首先手工熟悉一遍业务流程 2.录制脚本,选取协议,设置录制选项 1)Run-Time-Settings——Preferences——Options设置3个超时 2)Recording ...

  4. 【已解决】React中配置Sass引入.scss文件无效

    React中配置Sass引入.scss文件无效 在react中使用sass时,引入.scss文件失效 尝试很多方法没法解决,最终找到解决方法,希望能帮助正在坑里挣扎的筒子~ 在node_modules ...

  5. RTSP连接中断重连的问题

    最近在调查的一个问题. 起因是我司的一款数据链产品,15km数字图传,测试时发现视频画面经常会出现马赛克或卡顿. 图传设置了10Mbps速率,而视频码流是4Mbps,按道理不应该出现这种问题. 经过几 ...

  6. POJ-2586 Y2K Accounting Bug贪心,区间盈利

    题目链接: https://vjudge.net/problem/POJ-2586 题目大意: MS公司(我猜是微软)遇到了千年虫的问题,导致数据大量数据丢失.比如财务报表.现在知道这个奇特的公司每个 ...

  7. 小技巧-ASP.Net session保存在数据库服务器

    引用博客:http://www.cnblogs.com/lykbk/archive/2013/01/13/hf576856868.html web Form 网页是基于HTTP的,它们没有状态, 这意 ...

  8. canvas图像模糊以及图像变形问题

    问题:有时用canvas作图时发现图像会出现模糊不清晰的问题,甚至做出来的图呈现出的效果与我们给的数值所应该呈现出的效果不一致 原因:当你在支持html5 canvas的浏览器下查看页面的时候,can ...

  9. C# 获取网页源代码

    /// <summary> /// 获取网页源代码 /// </summary> /// <param name="url"></para ...

  10. angularjs1.x版本,父子组件之间的双向绑定

    今天遇到了一个angularjs的坑, ng-repeat和ng-if会改变他所包含的html中绑定变量的作用域. angularjs自定义指令,可以定义四种变量,通过 =,@,&双向绑定,单 ...