`

python tarfile-打包解包

 
阅读更多

 

最近项目上有一个ftp上传程序,需要把碎文件打包上传,到服务端再解包。本来已经只能通过shell来搞这个了,无奈打包过程中有一部分业务逻辑,不能把整个目录都打包,惊喜地发现python有tarfile这个东西,太惊喜了,试用完后发现还挺不错,打包一组466M的文件,共778个文件花了1.9s,解包花了2.3s。打包,解包代码如下:
tar打包
在写打包代码的过程中,使用tar.add()增加文件时,会把文件本身的路径也加进去,加上arcname就能根据自己的命名规则将文件加入tar包
打包代码:
#!/usr/bin/env /usr/local/bin/python
 # encoding: utf-8
 import tarfile
 import os
 import time

 start = time.time()
 tar=tarfile.open('/path/to/your.tar,'w')
 for root,dir,files in os.walk('/path/to/dir/'):
         for file in files:
                 fullpath=os.path.join(root,file)
                 tar.add(fullpath,arcname=file)
 tar.close()
 print time.time()-start
 
 
在打包的过程中可以设置压缩规则,如想要以gz压缩的格式打包
tar=tarfile.open('/path/to/your.tar.gz','w:gz')
其他格式如下表:
tarfile.open的mode有很多种:
mode action
'r' or 'r:*' Open for reading with transparent compression (recommended).
'r:' Open for reading exclusively without compression.
'r:gz' Open for reading with gzip compression.
'r:bz2' Open for reading with bzip2 compression.
'a' or 'a:' Open for appending with no compression. The file is created if it does not exist.
'w' or 'w:' Open for uncompressed writing.
'w:gz' Open for gzip compressed writing.
'w:bz2' Open for bzip2 compressed writing.
 
tar解包
tar解包也可以根据不同压缩格式来解压。
#!/usr/bin/env /usr/local/bin/python
 # encoding: utf-8
 import tarfile
 import time

 start = time.time()
 t = tarfile.open("/path/to/your.tar", "r:")
 t.extractall(path = '/path/to/extractdir/')
 t.close()
 print time.time()-start
 
 
上面的代码是解压所有的,也可以挨个起做不同的处理,但要如果tar包内文件过多,小心内存哦~
tar = tarfile.open(filename, 'r:gz')
for tar_info in tar:
    file = tar.extractfile(tar_info)
    do_something_with(file)
 

 

分享到:
评论

相关推荐

    简易文件打包&解包程序

    例如,在Python中,有`zipfile`、`tarfile`等标准库,可以方便地进行打包和解包操作。在Java中,可以使用`java.util.zip`包,而在C#中,可以利用`System.IO.Compression`命名空间。 对于“简易文件打包&解包程序”...

    SYSTEM.NEW.DAT解包工具(可解6.0)

    8. `tarfile.pyc`:用于读写tar格式归档文件的模块,tar是一种常见的文件打包格式。 9. `_pyio.pyc`:Python的IO基础库,包括文件操作和流处理等。 10. `typing.pyc`:Python的类型提示模块,用于静态类型检查,提升...

    Python库 | fbgbp-0.0.4.tar.gz

    在Python开发环境中,可以使用`tarfile`和`gzip`模块来处理这种类型的文件。例如,可以使用以下命令来解压和解包: ```python import tarfile import gzip with gzip.open('fbgbp-0.0.4.tar.gz', 'rb') as f_in: ...

    Python库 | yAuth-0.0.1.tar.gz

    在Python中,处理这种类型的压缩文件可以使用内置的`gzip`和`tarfile`模块。例如,以下代码片段展示了如何在Python中解压并提取'yAuth-0.0.1.tar.gz': ```python import tarfile import gzip with gzip.open('...

    Python库 | szgo-0.0.29.tar.gz

    "szgo"似乎是一个针对Python的特定库,版本号为0.0.29,以`.tar.gz`格式打包。这种格式是一种常见的归档和压缩方法,它结合了`tar`(用于打包多个文件)和`gzip`(用于压缩文件)的优点。 `.tar.gz`文件通常需要先...

    Python库 | adis-1.0.0.tar.gz

    要解压adis-1.0.0.tar.gz,首先需要使用`tarfile`模块将其解包,然后用`gzip`模块解压其中的文件。这通常涉及以下步骤: ```python import tarfile import gzip # 解压tar.gz文件 with tarfile.open('adis-1.0.0....

    Python库 | chickenstats-1.7.3.8.8.1.tar.gz

    在Python中,我们可以使用`tarfile`库来处理这样的压缩文件。例如,要解压这个文件,可以编写如下代码: ```python import tarfile # 打开并解压.tar.gz文件 with tarfile.open('chickenstats-1.7.3.8.8.1.tar.gz'...

    pc样本学习笔记之一个值得讨论的Python程序.docx

    综上所述,这份“pc样本学习笔记之一个值得讨论的Python程序”文档涉及了多个Python编程中的关键知识点,包括文件的基本操作、文件的解包与打包、文件的加密与解密以及如何安全地操作文件等内容。掌握这些技能对于...

    ats.rar_python

    Python的丰富库生态系统使得这样的任务变得简单,例如,可以结合使用`shutil`库进行文件操作,`zipfile`或`tarfile`库进行文件打包和解包。 总结来说,"ats.rar_python"文件包含的Python脚本利用了Python的paramiko...

    PyPI 官网下载 | check-types-0.0.4.tar.gz

    首先,`tarfile`模块用于读写tar档案文件,可以用来打包或解包文件和目录。而`gzip`模块则提供了对gzip压缩文件的支持,它可以将文件解压缩为原始内容。 check-types-0.0.4这个库可能是一个类型检查工具,用于帮助...

    PyPI 官网下载 | formasaurus-0.5.tar.gz

    对于Python开发者来说,可以使用`tarfile`模块来完成这个过程,如: ```python import tarfile # 解压缩 with tarfile.open('formasaurus-0.5.tar.gz', 'r:gz') as tar: tar.extractall() # 提取到当前工作目录 #...

    PyPI 官网下载 | ctbBio-0.16.tar.gz

    在Python环境中,可以使用`tarfile`模块来完成这两个操作: ```python import tarfile # 解压 .tar.gz 文件 with tarfile.open('ctbBio-0.16.tar.gz', 'r:gz') as tar: tar.extractall() # 提取到当前目录 # ...

    PyPI 官网下载 | cse.py-1.1.3.tar.gz

    在Python环境中,我们首先需要解压这个文件,使用`tar`命令解包,然后用`gzip`解压缩。在Python中,可以使用`tarfile`和`gzip`模块来实现这一过程。 ```python import tarfile import gzip # 解压 .tar.gz 文件 ...

    PyPI 官网下载 | Bot-Base-1.2.3.tar.gz

    在Python中,可以使用 `tarfile` 模块来处理这类文件,首先解压,然后解包。 **安装与使用** 要在Python环境中安装 "Bot-Base",用户通常会使用 `pip`,Python的包管理器。在命令行中输入以下命令: ```bash pip ...

    PyPI 官网下载 | clients-1.0.tar.gz

    在Python中,可以使用`tarfile`模块来处理这种类型的文件,首先解压,然后解包,以便访问内部的文件和目录。 **安装Python库** 在Python中,通常使用`pip`(Python的包管理器)来安装从PyPI下载的库。对于"clients...

    PyPI 官网下载 | epsagon-1.0.23.tar.gz

    因此,要解压`epsagon-1.0.23.tar.gz`,用户可以先用`gzip`解压成`.tar`文件,然后使用`tarfile`将其解包为原始的目录结构。 总结来说,`PyPI 官网下载 | epsagon-1.0.23.tar.gz`涉及的知识点包括Python库的分发与...

    PyPI 官网下载 | formatist-0.0.2.tar.gz

    在Python中,我们可以使用内置的`tarfile`模块来读取和操作这类文件。例如,要提取`formatist-0.0.2.tar.gz`,可以先用`gzip`解压,再用`tar`解包,将库的源代码释放到指定的目录。 **Python库的安装与使用**——...

    【开源】自制小工具集1.0,包括压缩、解压、excel转图片

    这两个库分别支持ZIP和TAR格式,能够方便地进行文件或目录的打包和解包。用户可以通过此功能快速整理和传输大量文件。 4. **Excel转图片**:此功能可能使用了`openpyxl`库读取Excel文件,并借助`PIL`(Python ...

    images.tar.gz

    例如,Python有一个名为tarfile的库,可以方便地读取、创建和操作tar文件,同时还可以结合gzip模块处理.gz压缩。通过编程方式,你可以轻松地批量处理这类压缩文件,实现自动化备份、迁移或分析图像数据。 在资源...

Global site tag (gtag.js) - Google Analytics