'''
python中的tarfile模块实现文档的归档压缩和解压缩 功能:
把工作空间下面的所有文件,打包生成一个tar文件
同时提供一个方法把该tar文件中的一些文件解压缩到
指定的目录中
'''

运行效果:

如果在你计算机的C盘里面没有test目录,系统会自动创建该目录:c:\\test

如果在你计算机的c:\\test目录下面没有temp目录,系统会自动创建该目录:c:\\test\\temp

控制台输出:

Python 3.3.2 (v3.3.2:d047928ae3f6, May 16 2013, 00:03:43) [MSC v.1600 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ================================
>>>
创建目录:[c:\test]
创建目录:[c:\test\temp]
获取工作空间下的所有文件...
打开文件:[c:\test\hongten.tar]
压缩文件:[fibo.py]
压缩文件:[main.py]
压缩文件:[pythonindex.html]
压缩文件:[test_arrange.py]
压缩文件:[test_array.py]
压缩文件:[test_blogs.py]
压缩文件:[test_calendar.py]
压缩文件:[test_calendar_html.py]
压缩文件:[test_class.py]
压缩文件:[test_collections]
压缩文件:[test_collections.py]
压缩文件:[test_copy.py]
压缩文件:[test_count.py]
压缩文件:[test_email.py]
压缩文件:[test_email_send.py]
压缩文件:[test_filecmp.py]
压缩文件:[test_for.py]
压缩文件:[test_function.py]
压缩文件:[test_glob.py]
压缩文件:[test_gzip.py]
压缩文件:[test_linecache.py]
压缩文件:[test_list.py]
压缩文件:[test_modules.py]
压缩文件:[test_more_mudels.py]
压缩文件:[test_mysql.py]
压缩文件:[test_n.py]
压缩文件:[test_os.py]
压缩文件:[test_pprint.py]
压缩文件:[test_qq.py]
压缩文件:[test_shutil.py]
压缩文件:[test_stat.py]
压缩文件:[test_tar.py]
压缩文件:[test_tempfile.py]
压缩文件:[test_tkinter.py]
压缩文件:[test_truth_value.py]
压缩文件:[test_wifi.py]
压缩文件:[test_windows.py]
压缩文件:[__pycache__]
关闭文件[c:\test\hongten.tar]
##################################################
打开文件:[c:\test\hongten.tar]
获取到所有文件名称:['fibo.py', 'main.py', 'pythonindex.html', 'test_arrange.py', 'test_array.py', 'test_blogs.py', 'test_calendar.py', 'test_calendar_html.py', 'test_class.py', 'test_collections', 'test_collections.py', 'test_copy.py', 'test_count.py', 'test_email.py', 'test_email_send.py', 'test_filecmp.py', 'test_for.py', 'test_function.py', 'test_glob.py', 'test_gzip.py', 'test_linecache.py', 'test_list.py', 'test_modules.py', 'test_more_mudels.py', 'test_mysql.py', 'test_n.py', 'test_os.py', 'test_pprint.py', 'test_qq.py', 'test_shutil.py', 'test_stat.py', 'test_tar.py', 'test_tempfile.py', 'test_tkinter.py', 'test_truth_value.py', 'test_wifi.py', 'test_windows.py', '__pycache__', '__pycache__/fibo.cpython-33.pyc']
提取文件:[pythonindex.html]
>>>

=================================================

代码部分:

=================================================

 #python tar

 #Author : Hongten
#MailTo : hongtenzone@foxmail.com
#QQ : 648719819
#Blog : http://www.cnblogs.com/hongten
#Create : 2013-08-19
#Version: 1.0 import os
import tarfile
'''
python中的tarfile模块实现文档的归档压缩和解压缩 功能:
把工作空间下面的所有文件,打包生成一个tar文件
同时提供一个方法把该tar文件中的一些文件解压缩到
指定的目录中
'''
#global var
SHOW_LOG = True
#tar文件存放位置
TAR_PATH = ''
#取出文件存放目录
EXT_PATH = '' def write_tar_file(path, content):
'''打开指定path的tar格式的文件,如果该文件不存在
系统会自动创建该文件,如果该文件以及存在,则打开文件
打开文件后,向文件中添加文件(这个功能类似于把几个文件
打包成tar包文件)'''
with tarfile.open(path, 'w') as tar:
if SHOW_LOG:
print('打开文件:[{}]'.format(path))
for n in content:
if SHOW_LOG:
print('压缩文件:[{}]'.format(n))
tar.add(n)
if SHOW_LOG:
print('关闭文件[{}]'.format(path))
tar.close() def get_workspace_files():
'''获取工作空间下面的所有文件,然后以列表的形式返回'''
if SHOW_LOG:
print('获取工作空间下的所有文件...')
return os.listdir('./') def extract_files(tar_path, ext_path, ext_name):
'''解压tar文件中的部分文件到指定目录中'''
with tarfile.open(tar_path) as tar:
if SHOW_LOG:
print('打开文件:[{}]'.format(tar_path))
names = tar.getnames()
if SHOW_LOG:
print('获取到所有文件名称:{}'.format(names))
for name in names:
if name.split('.')[-1] == ext_name:
if SHOW_LOG:
print('提取文件:[{}]'.format(name))
tar.extract(name, path = ext_path) def mkdir(path):
'''创建不存在的目录'''
if os.path.exists(path):
if SHOW_LOG:
print('存在目录:[{}]'.format(path))
else:
if SHOW_LOG:
print('创建目录:[{}]'.format(path))
os.mkdir(path) def init():
global SHOW_LOG
SHOW_LOG = True
#tar文件存放位置
global TAR_PATH
TAR_PATH = 'c:\\test\\hongten.tar'
#取出文件存放目录
global EXT_PATH
EXT_PATH = 'c:\\test\\temp'
#创建目录,如果目录不存在
path = os.path.split(TAR_PATH)[0]
mkdir(path)
mkdir(EXT_PATH) def main():
init()
content = get_workspace_files()
#打包文件
write_tar_file(TAR_PATH, content)
print('#' * 50)
#提取文件
extract_files(TAR_PATH, EXT_PATH, 'html') if __name__ == '__main__':
main()

python开发_tarfile_文档归档压缩|解压缩的更多相关文章

  1. python开发_HTMLParser_html文档解析

    ''' 在HTMLParser类中,定义了很多的方法,但是很多方法都是没有实现的, 这需要我们继承HTMLParser类,自己去实现一些方法 如: # Overridable -- handle st ...

  2. WEB前端开发规范文档(转)

    http://codeguide.bootcss.com/  编写灵活.稳定.高质量的 HTML 和 CSS 代码的规范上面的文档 再结合下面的规范: 无论是从技术角度还是开发视角,对于web前端开发 ...

  3. 网站开发进阶(三十八)Web前端开发规范文档你需要知道的事

    Web前端开发规范文档你需要知道的事 规范目的 为提高团队协作效率, 便于后台人员添加功能及前端后期优化维护, 输出高质量的文档, 特制订此文档. 本规范文档一经确认, 前端开发人员必须按本文档规范进 ...

  4. Web前端开发规范文档你需要知道的事

    Web前端开发规范文档你需要知道的事 规范目的 为提高团队协作效率, 便于后台人员添加功能及前端后期优化维护, 输出高质量的文档, 特制订此文档. 本规范文档一经确认, 前端开发人员必须按本文档规范进 ...

  5. WEB前端开发规范文档[转]

    为新项目写的一份规范文档, 分享给大家. 我想前端开发过程中, 无论是团队开发, 还是单兵做站, 有一份开发文档做规范, 对开发工作都是很有益的. 本文档由本人编写, 部分意见来源于网络, 以此感谢, ...

  6. 【转】Python之xml文档及配置文件处理(ElementTree模块、ConfigParser模块)

    [转]Python之xml文档及配置文件处理(ElementTree模块.ConfigParser模块) 本节内容 前言 XML处理模块 ConfigParser/configparser模块 总结 ...

  7. centos 文档的压缩和打包 gzip,bzip2,xz,zip,unzip,tar,tgz 第九节课

    centos  文档的压缩和打包   gzip,bzip2,xz,zip,unzip,tar,tgz  第九节课 SAS盘可以支持热插拔,看机器 tar.zip.tar -czvf 不会动源文件,gz ...

  8. 使用Python操作Excel文档(一)

    Python | 使用Python操作Excel文档(一) 0 前言 在阅读本文之前,请确保您已满足或可能满足以下条件: 请确保您具备基本的Python编程能力. 请确保您会使用Excel. 请确保您 ...

  9. Python读取word文档内容

    1,利用python读取纯文字的word文档,读取段落和段落里的文字. 先读取段落,代码如下: 1 ''' 2 #利用python读取word文档,先读取段落 3 ''' 4 #导入所需库 5 fro ...

随机推荐

  1. tf.name_scope tf.variable_scope学习

    1. 首先看看比较简单的 tf.name_scope(‘scope_name’). tf.name_scope 主要结合 tf.Variable() 来使用,方便参数命名管理. ''' Signatu ...

  2. java类中访问属性

    package first; public class for_protect { private int age=10; int number = 100; public void show(){ ...

  3. PIP安装时报The repository located at pypi.douban.com is not a trusted or secure host and is being ignore

    C:\WINDOWS\system32>pip install scrapyCollecting scrapy The repository located at pypi.douban.com ...

  4. 如何删除git远程分支(转)

    1,在开发过程中,大家在远程创建了许多分支,有些是无用的,该如何删除呢,可以参考下面的方法. 如果不再需要某个远程分支了,比如搞定了某个特性并把它合并进了远程的 master 分支(或任何其他存放 稳 ...

  5. 20180830 安装git时报错,

    安装:https://blog.csdn.net/u013256816/article/details/54743470 解决问题:https://blog.csdn.net/daojibruce/a ...

  6. javascript当中的this详解

    总结this的3个规则: this是调用上下文,上下文被创建或者初始化时才确定 非严格模式:this是全局对象:严格模式:this是undefined 函数调用 a. 以函数形式调用的函数通常不使用t ...

  7. Erasure Coding(纠删码)深入分析 转

    1.前言 Swift升级到2.0大版本后宣称开始支持纠删码,这其实是一个很有意义的特性,主要是能够在一定程度上解决3副本空间浪费太多的问题.因为3副本这一点是swift推广的最大障碍之一,成本的增加吓 ...

  8. Weex 版扫雷游戏开发

    扫雷是一个喜闻乐见的小游戏,今天在看 Weex 文档的过程中,无意中发现用 Weex 完全可以开发一个扫雷出来.当然这个扫雷和 Windows 那个有一点差距,不过麻雀虽小五脏俱全,随机布雷.自动挖雷 ...

  9. CentOS/RHEL Linux安装EPEL第三方软件源

    https://www.vpser.net/manage/centos-rhel-linux-third-party-source-epel.html

  10. c++ primer 9 顺序容器

    定义: #include <vector> #include <list> #include <deque> vector<int> svec; lis ...