下面是小编为大家整理的Python中使用tarfile压缩、解压tar归档文件示例,本文共8篇,仅供参考,大家一起来看看吧。本文原稿由网友“cvb888”提供。
篇1:Python中使用tarfile压缩、解压tar归档文件示例
这篇文章主要介绍了Python中使用tarfile压缩、解压tar归档文件示例,本文直接给出解压和压缩代码示例,需要的朋友可以参考下
Python自带的tarfile模块可以方便读取tar归档文件,牛b的是可以处理使用gzip和bz2压缩归档文件tar.gz和tar.bz2,
与tarfile对应的是zipfile模块,zipfile是处理zip压缩的。请注意:os.system(cmd)可以使Python脚本执行命令,当然包括:tar -czf *.tar.gz *,tar -xzf *.tar.gz,unzip等,当我觉得这样尽管可以解决问题,但我觉得很业余。
使用tarfile压缩
代码如下:
import tarfile
#创建压缩包名
tar = tarfile.open(“/tmp/tartest.tar.gz”,“w:gz”)
#创建压缩包
for root,dir,files in os.walk(“/tmp/tartest”):
for file in files:
fullpath = os.path.join(root,file)
tar.add(fullpath)
tar.close
使用tarfile解压
代码如下:
def extract(tar_path, target_path):
try:
tar = tarfile.open(tar_path, “r:gz”)
file_names = tar.getnames()
for file_name in file_names:
tar.extract(file_name, target_path)
tar.close()
except Exception, e:
raise Exception, e
其中open的原型是:
代码如下:
tarfile.open(name=None, mode=‘r‘, fileobj=None, bufsize=10240, **kwargs)
mode的值有:
代码如下:
‘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.
更多请参考:tarfile ― Read and write tar archive files
篇2:在Linux系统中使用tar命令压缩和解压文件的教程
linux中的tar命令
tar(磁带归档)命令是linux系统中被经常用来将文件存入到一个归档文件中的命令,
其常见的文件扩展包括:.tar.gz 和 .tar.bz2, 分别表示通过了gzip或bzip算法进一步进行了压缩。
在本教程中我们会管中窥豹一下在linux桌面或服务器版本中使用tar命令来处理一些创建和解压归档文件的日常工作的例子。
使用tar命令
tar命令在大部分linux系统默认情况下都是可用的,所以你不用单独安装该软件。
tar命令具有两个压缩格式,gzip和bzip,该命令的“z”选项用来指定gzip,“j”选项用来指定bzip。同时也可以创建非压缩归档文件。
1.解压一个tar.gz归档
一般常见的用法是用来解压归档文件,下面的命令将会把文件从一个tar.gz归档文件中解压出来。
代码如下:
$ tar -xvzf tarfile.tar.gz
这里对这些参数做一个简单解释-
x - 解压文件
v - 冗长模式,在解压每个文件时打印出文件的名称。
z - 该文件是一个使用 gzip 压缩的文件。
f - 使用接下来的tar归档来进行操作。
这些就是一些需要记住的重要选项。
解压 tar.bz2/bzip 归档文件
具有bz2扩展名的文件是使用bzip算法进行压缩的,但是tar命令也可以对其进行处理,但是需要通过使用“j”选项来替换“z”选项。
代码如下:
$ tar -xvjf archivefile.tar.bz2
2.将文件解压到一个指定的目录或路径
为了将文件解压到一个指定的目录中,使用“-C”选项来指定路径,此处的“C”是大写“C”。
代码如下:
$ tar -xvzf abc.tar.gz -C /opt/folder/
然后,首先需要确认目标目录是否存在,毕竟tar命令并不会为你创建目录,所以如果目标目录不存在的情况下该命令会失败。
3. 提取出单个文件
为了从一个归档文件中提取出单个文件,只需要将文件名按照以下方式将其放置在命令后面。
代码如下:
$ tar -xz -f abc.tar.gz “./new/abc.txt”
在上述命令中,可以按照以下方式来指定多个文件。
代码如下:
$ tar -xz -f abc.tar.gz “./new/cde.txt” “./new/abc.txt”
4.使用通配符来解压多个文件
通配符可以用来解压于给定通配符匹配的一批文件,例如所有以“.txt”作为扩展名的文件。
代码如下:
$ tar -xz -f abc.tar.gz --wildcards “*.txt”
5. 列出并检索tar归档文件中的内容
如果你仅仅想要列出而不是解压tar归档文件的中的内容,使用“-t”(test)选项, 下面的命令用来打印一个使用gzip压缩过的tar归档文件中的内容。
代码如下:
$ tar -tz -f abc.tar.gz
./new/
./new/cde.txt
./new/subdir/
./new/subdir/in.txt
./new/abc.txt
...
可以将输出通过管道定向到grep来搜索一个文件,或者定向到less命令来浏览内容列表。 使用“v”冗长选项将会打印出每个文件的额外详细信息。
对于 tar.bz2/bzip文件,需要使用“j”选项。
结合上述的命令和grep命令来检索归档文件,如下所示。简单吧!
代码如下:
$ tar -tvz -f abc.tar.gz | grep abc.txt
-rw-rw-r-- enlightened/enlightened 0 -01-13 11:40 ./new/abc.txt
6.创建一个tar/tar.gz归档文件
现在我们已经学过了如何解压一个tar归档文件,是时候开始创建一个新的tar归档文件了。tar命令可以用来将所选的文件或整个目录放入到一个归档文件中,以下是相应的样例。
下面的命令使用一个目录来创建一个tar归档文件,它会将该目录中所有的文件和子目录都加入到归档文件中。
代码如下:
$ tar -cvf abc.tar ./new/
./new/
./new/cde.txt
./new/abc.txt
上述命令不会创建一个压缩的的归档文件,只是一个普通的归档文件,只是将多个文件放入到一个归档文件中并没有真正地压缩每个文件,
为了使用压缩,可以分别使用“z”或“j”选项进行gzip或bzip压缩算法。
代码如下:
$ tar -cvzf abc.tar.gz ./new/
文件的扩展名其实并不真正有什么影响。“tar.gz” 和“tgz”是gzip压缩算法压缩文件的常见扩展名。 “tar.bz2”和“tbz”是bzip压缩算法压缩文件的常见扩展名(LCTT 译注:归档是否是压缩的和采用哪种压缩方式并不取决于其扩展名,扩展名只是为了便于辨识。)。
7. 在添加文件之前进行确认
一个有用的选项是“w”,该选项使得tar命令在添加每个文件到归档文件之前来让用户进行确认,有时候这会很有用。
使用该选项时,只有用户输入“y”时的文件才会被加入到归档文件中,如果你不输入任何东西,其默认表示是一个“n”。
代码如下:
# 添加指定文件
$ tar -czw -f abc.tar.gz ./new/*
add ‘./new/abc.txt’?y
add ‘./new/cde.txt’?y
add ‘./new/newfile.txt’?n
add ‘./new/subdir’?y
add ‘./new/subdir/in.txt’?n
#现在列出所有被加入的文件
$ tar -t -f abc.tar.gz
./new/abc.txt
./new/cde.txt
./new/subdir/
8. 加入文件到存在的归档文件中
“r”选项可以被用来将文件加入到已存在的归档文件中,而不用创建一个新的归档文件,下面是一个简单的样例:
代码如下:
$ tar -rv -f abc.tar abc.txt
文件并不能加入到已压缩的归档文件中(gz 或 bzip)。文件只能被加入到普通的归档文件中。
9. 将文件加入到压缩的归档文件中(tar.gz/tar.bz2)
之前已经提到了不可能将文件加入到已压缩的归档文件中,然而依然可以通过简单的一些把戏来完成。使用gunzip命令来解压缩归档文件,然后将文件加入到归档文件中后重新进行压缩。
代码如下:
$ gunzip archive.tar.gz
$ tar -rf archive.tar ./path/to/file
$ gzip archive.tar
对于bzip文件分别使用bzip2和bunzip2。
10.通过tar来进行备份
一个真实的场景是在固定的时间间隔内来备份目录,tar命令可以通过cron调度来实现这样的一个备份,以下是一个样例 :
代码如下:
$ tar -cvz -f archive-$(date +%Y%m%d).tar.gz ./new/
使用cron来运行上述的命令会保持创建类似以下名称的备份文件 :‘archive-20150218.tar.gz‘。
当然,需要确保日益增长的归档文件不会导致磁盘空间的溢出。
11. 在创建归档文件时进行验证
“W”选项可以用来在创建归档文件之后进行验证,以下是一个简单例子。
代码如下:
$ tar -cvW -f abc.tar ./new/
./new/
./new/cde.txt
./new/subdir/
./new/subdir/in.txt
./new/newfile.txt
./new/abc.txt
Verify ./new/
Verify ./new/cde.txt
Verify ./new/subdir/
Verify ./new/subdir/in.txt
Verify ./new/newfile.txt
Verify ./new/abc.txt
需要注意的是验证动作不能在压缩过的归档文件上进行,只能在非压缩的tar归档文件上执行。
这次就先到此为止,可以通过“man tar”命令来查看tar命令的的手册。
篇3:linux中tar怎么解压tar.xz文件linux操作系统
在linux中有朋友会发现有tar.xz文件,这种文件有的可能是头一次要怎么解压呢,下面我给大家介绍,
简单命令
代码如下复制代码$xz -d ***.tar.xz
$tar -xvf ***.tar
可以看到tar.xz 文件,采用双层压缩方式,外层用xz压缩,里层用tar压缩
下在看在Centos中:
yum -y install xz 完成后
运行 xz -d x.tar.xz 得到 x.tar ,
然后 tar -xvf x.tar 就解压到了,
篇4:在Linux中使用Gzip压缩和解压文件的教程
这篇文章主要介绍了在Linux中使用Gzip压缩和解压文件的教程,Gzip软件基于CGI界面使用,需要的朋友可以参考下
Gzip 即 GNU zip,它是一个被广泛用于 Linux 操作系统中的压缩应用,被其压缩的文件的后缀名为‘*.gz‘ ,
基本用法如下:
a) 压缩文件
代码如下:gzip file(s)
每个文件将被单独压缩。
压缩文件
通常在压缩完成后,它会将原来的文件删除。我们可以使用 -c 选项来保留原来的文件。
代码如下:gzip -c file >file.gz
压缩后保留原有文件
我们也可以将一组文件压缩到一个单独的文件中
代码如下:cat file1 file2 file3 | gzip >archieve.gz
压缩一组文件
b) 检查压缩比
被压缩文件的压缩比可以使用 ‘-l’ 选项来进行检验,
代码如下:gzip -l archieve.gz
检查压缩率
c) 解压文件
Gunzip 用来解压文件,在这里,原有的(压缩)文件在被解压后同样会被删除。使用 -c选项来保留原始文件。
代码如下:gunzip -c archieve.gz
解压文件
gzip 加上‘-d‘选项 和 gunzip 对压缩文件有同样的效果。
更多细节可以从 gzip 主页 得到。
篇5:Python压缩和解压缩zip文件
这篇文章主要介绍了Python压缩和解压缩zip文件,本文直接给出实例代码,需要的朋友可以参考下
zip文件是我们经常使用的打包格式之一,python解压和压缩zip效率非凡, python解压zip文档:
代码如下:
#/usr/bin/python
#coding=utf-8
import os,sys,time
import zipfile
filename = ‘callofdutyblackopszombies_1349649132343_my.zip‘ #要解压的文件
filedir = ‘data/‘ #解压后放入的目录
r = zipfile.is_zipfile(filename)
if r:
starttime = time.time
fz = zipfile.ZipFile(filename,‘r‘)
for file in fz.namelist():
print(file) #打印zip归档中目录
fz.extract(file,filedir)
endtime = time.time()
times = endtime - starttime
else:
print(‘This file is not zip file‘)
print(‘times‘ + str(times))
python压缩文件夹为zip
代码如下:
#/usr/bin/python
#coding=utf-8
import os
import zipfile
import sys
try:
import zlib
compression = zipfile.ZIP_DEFLATED
except:
compression = zipfile.ZIP_STORED
path = ‘data/‘ #要进行压缩的文档目录
start = path.rfind(os.sep) + 1
filename = ‘callofdutyblackopszombies_1349649132343_my.zip‘ #压缩后的文件名
z = zipfile.ZipFile(filename,mode = “w”,compression = compression)
try:
for dirpath,dirs,files in os.walk(path):
for file in files:
if file == filename or file == “zip.py”:
continue
print(file)
z_path = os.path.join(dirpath,file)
z.write(z_path,z_path[start:])
z.close()
except:
if z:
z.close()
篇6:再Linux下使用Tar工具归档文件的教程
Tar 由 ‘Tape archiver(磁带归档器)‘ 衍生而来,最初被用来在磁带上归档和存储文件,Tar 是一个 GNU 软件,它可以压缩一组文件(归档),或提取它们以及对已有的归档文件进行相关操作。在存储、备份以及传输文件方面,它是很有用的。在创建归档文件时,Tar 可以保持原有文件和目录结构不变。通过 Tar 归档的文件的后缀名为 ‘.tar’。
基本用法如下:
a) 创建归档 (c / --create)
代码如下:
tar --create --verbose --file=archive.tar file1 file2 file3
或
代码如下:
tar cvf archive.tar file1 file2 file3
创建一个归档b) 列出归档文件内容 ( t / --list)
代码如下:
tar --list archive.tar
列出归档中包含的文件c) 提取归档 (x / --extract)
代码如下:
tar xvf archive.tar
tar xvf archive.tar --wildcards ‘*.c‘
- 从归档中提取后缀名为 *.c 的文件,
提取文件 只提取需要的文件d) 对归档文件进行更新 ( u / --update)
代码如下:
tar uvf archive.tar newfile.c
- 假如归档的newfile.c 要比先前已经归档的新,则添加更新的 newfile.c 到归档里面.
更新一个归档e) 从归档中删除文件 (--delete)
代码如下:
tar --delete -f archive.tar file1.c
- 从压缩包‘archive.tar‘ 中删除文件‘file1.c‘
删除文件更加具体的使用方法请参考tar 主页。
篇7:linux中tar解压gz文件方法详解linux操作系统
在linux中压缩与解压缩文件我们都会使用tar文件,下面我来给各位同学详细介绍在linux中tar解压gz文件方法,希望此方法对各位同学会有所帮助,
.tar
解包:tar xvf FileName.tar
打包: tar cvf FileName.tar DirName
.gz
解压 gunzip FileName.gz
gzip -d FileName.gz
压缩 gzip FileName
.tar.gz .tgz
解压: tar zxvf FileName.tar.gz
压缩: tar zcvf FileName.tar.gz
篇8:Linux命令之文件归档、压缩、解压缩tar,gzip,gunzip,bzip2,bunz
tar 建立档案文件
【语法】 tar [option] tarfile filename
【命令说明】
文件名必须紧跟在-f参数后,且作为参数的最后一项;
【参数说明】
-c 建立一个新的档案文件;
-f 指定档案文件名;
-r 往归档文件中追加文件;
-x 从档案文件中提取文件;
-v,-vv 显示进度信息;
-t 列出存档文件的信息(不提取);
-C 指定文件提取的目录;
-A 合并多个tar文件;
--totals 归档完成后,打印总归档字节数;
--delete 从归档文件中删除指定的文件;
--exclude 归档时,排除指定样式的文件;
-j 生成归档文件时,使用bunzip2格式进行压缩;
-z 生成归档文件时,使用gzip格式进行压缩;
--lzma 生成归档文件时,使用lzma格式进行压缩;
-a 生成归档文件时,根据扩展名自动进行压缩;
【一般用法】
#打tar包,名称为all.tar
$ tar -cvf all.tar *.text;
#追加文件b.doc
$ tar -rvf all.tar b.doc;
#列出归档文件中的内容
$ tar -tvf all.tar;
#提取归档文件中的全部文件
$ tar -xvf all.tar;
$ tar -xvf all.tar -C /opt/app/tool_dir;
#提取归档文件中的指定文件
$ tar -xvf all.tar file_one file_two
#合并两个tar文件
$ tar -Af file_one.tar file_two.tar
#删除指定的文件
$ tar -f all.tar --delete file_one file_two
#归档时,排除日志文件
$ tar -cf all.tar * --exclude ”*.log”
gzip/gunzip 进行压缩/解压缩
【语法】
gzip [options] file;
gunzip [options] file;
【命令说明】
gzip只能压缩单个文件,如果指定多个文件,则会生成多个单独的压缩文件;
gzip会在生成压缩文件后,删除源文件!!!!
gunzip会在解压缩完成后,删除源文件!!!
【参数说明】
-l,--list 列出压缩文件的属性信息;
--fast 指定最低压缩比;
--best 指定最高压缩比;
-n 指定压缩比(n为数字,且1<=n<=9);
-v 显示进度信息;
bzip2/bunzip2 进行压缩/解压缩
【语法】
bzip2 file;
bunzip2 file;
【命令说明】
bzip2通常能生成比gzip压缩比更高的文件;默认bzip2会删除源文件,可使用-k参数保留源文件;
【参数说明】
-k 保留源文件;
-n 指定压缩比(n为数字,且1<=n<=9);
zip/unzip 进行压缩/解压缩
【语法】 zip [options] file file dirs
【命令说明】
zip压缩/解压缩后,不会删除源文件;
【参数说明】
-r 递归;压缩目录时使用;
-l 列出压缩文件内容;
-d 从压缩文件中删除指定文件;
-u 更新压缩文件的内容;
【一般用法】
#压缩文件
$ zip all.zip file;
$ zip all.zip file_one file_two;
$ zip -r all.zip dir_name;
#更新压缩文件
$ zip all.zip -u log.text
#删除指定的内容
$ zip -d all.zip log.text;
#解压文件
$ unzip all.zip;
#列出压缩文件内容
$ unzip -l all.zip;