首页 > 编程语言 > 详细

Python ---- tarfile && zipfile 压缩及打包

时间:2020-05-14 18:15:27      阅读:67      评论:0      收藏:0      [点我收藏+]

感觉使用Python压缩是不是更方便点儿啊,现在都魔怔了,就用"ipython"替代命令行了都(哈哈哈哈)

tarfile:

tarfile不得不说真的很好用,感觉比“Linux”上的“tar”命令好用(不过我还是很热爱Linux的,嘻嘻.)

Python的tarfile标准库提供了tar命令提供的功能,我们可以使用它来创建或读取一个tar文件;

1. 创建tar包

In [1] import tarfile, os
In [2] with tarfile.open(new.tar,w) as f:
    ...:     for file in os.listdir(.):
    ...:         f.add(file)

2. 读取tar包(查看tar包中文件)

In [3]: with tarfile.open(test.tar) as out: 
   ...:     for name in out.getnames(): 
   ...:         print(name) 

2.2 读取tar包(打开tar包)

In [4]: with tarfile.open(test.tar) as out: 
   ...:     out.extractall()

3. 创建压缩包(gzip)

tarfile不支持创建zip格式的压缩包,所以有了zipfile这个模块,这个都看习惯吧,其实我比较习惯用gzip;

 1. 创建一个用gzip算法压缩的tar包

In [4]: with tarfile.open(dir1.tar.gz,w:gz) as f: 
   ...:     f.add(dir1)    # 图中为dir1的目录结构,自动将子目录及子目录下的所有文件都打进了gzip包中(这个非常好)
技术分享图片

2. 读取一个用gzip算法压缩的tar包

a) # 获取压缩包中的文件名及绝对路径
In [5]: with tarfile.open(dir1.tar.gz,r:gz) as out: ...: for name in out.getnames(): ...: print(name)
技术分享图片

 

 b) # 解压gzip压缩包

In [6]: with tarfile.open(‘dir1.tar.gz‘,‘r:gz‘) as out: 
   ...:     out.extractall()

 zipfile:

当我们要将文件或目录压缩为zip格式的时候或我们要讲zip格式的文件解压的时候需要用到zipfile模块

1.创建zip文件

In [7]: import zipfile
   ...:  newzip = zipfile.ZipFile(new.zip,w)
   ...:  newzip.write(a.txt)
   ...:  newzip.close()

2. 读取zip文件(展示zip文件中的文件列表)

In [7]: newzip = zipfile.ZipFile(new.zip)
   ...:   newzip.namelist()

3.读取zip文件(解压)

In [7]: newzip = zipfile.ZipFile(new.zip)
   ...:   newzip.extractall()

案例:压缩/root目录下的所有文件(包括子目录及子目录下的文件)

zipfile有一种情况就是如果被压缩的目标是一个目录,且这个目录下还有子目录,同时也要压缩子目录的文件的情况下就需要与循环一起用,

默认不会主动压缩

#!/usr/bin/python3

import os, zipfile, sys

def zip_file(zipname, dirs=[]):
    newzip = zipfile.ZipFile(zipname,w)
    if os.path.isdir(dirs):
       for root,dirs,files in os.walk(dirs):
           for file in files:
               newzip.write(os.path.join(root,file))
       print(compressing!)
       newzip.close()
    else:
       print("{0} is not directory.".format(dirs))
       sys.exit(2)


def main():
    sys.argv.append("")
    zipname = sys.argv[1]
    dirs = sys.argv[2]
    print(zipname)
    zip_file(zipname,dirs)

if __name__ == "__main__":
   main()

技术分享图片

 

Python ---- tarfile && zipfile 压缩及打包

原文:https://www.cnblogs.com/k-free-bolg/p/12887635.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!