好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

python压缩与解压缩

python压缩与解压缩

压缩 文件 :

import os
import zipfile
import time
# 压缩目录
source_dir  = r'F:\web'
# 按时间生成 文件 名称
target_file = time.strftime('%Y%m%d%H%M%S') + '.zip'

myZipFile = zipfile.ZipFile(target_file, 'w' )# 压缩所有 文件 ,包含子目录
for root,dirs,files in os.walk(source_dir):
    for vfileName in files:
        fileName = os.path.join(root,vfileName)
        myZipFile.write( fileName, fileName, zipfile.ZIP_DEFLATED )
 # 压缩完成
myZipFile.close()

 

 

 

Gzip File Handling.  The  gzip  module provides function and class definitions that make it easy to handle simple Gzip files. These allow you to open a compressed file and read it as if it were already decompressed. They also allow you to open a file and write to it, having the data automatically compressed as you write.

gzip.open (   filename   ,  mode   ,  level   ,  fileobj   ) →  gzip.GzipFile

Open the file named  filename   with the given  mode   ( 'r' ,  'w'  or  'a' ). The compression  level   is an integer that provides a preference for speed versus size. As an alternative, you can open a file or socket separately and provide a  fileobj   , for example,  f= open('somefile','r'); zf= gzip.open( fileobj=f ) .

Once this file is open, it can perform ordinary  read ,  readline ,  readlines ,  write ,  writeline , and  writelines  operations. If you open the file with  'rb' mode, the various read functions will decompress the file's contents as the file is read. If you open the file with  'wb'  or  'ab'  modes, the various write functions will compress the data as they write to the file.

 

 

 

 

How to create full compressed tar file using Python?

up vote 1 down vote favorite

1

how can I create a .tar.gz file which compress the data as much tar can...

link | flag

asked  Jan 9 at 4:59

Tumbleweed
1,223 3 17


75% accept rate

2  

tar doesn't compress data, it just packs the files together. It's gzip that does the actual compression. –  Ignacio Vazquez-Abrams   Jan 9 at 5:19

add comment

start a bounty

3 Answers

oldest newest votes

up vote 3 down vote accepted

You call  tarfile.open  with  mode='w:gz' , meaning "Open for gzip compressed writing."

You'll probably want to end the filename (the  name  argument to  open ) with  .tar.gz , but that doesn't affect compression abilities.

BTW, you usually get better compression with a mode of  'w:bz2' , just like  tar  can usually compress even better with  bzip2  than it can compress with  gzip .

link | flag

answered  Jan 9 at 5:19

Alex Martelli
141k 5 127 374

1  

Just a quick note that the filename for bzip2-compressed tarballs should end with ".tar.bz2". –  Ignacio Vazquez-Abrams   Jan 9 at 5:23

add comment

up vote 0 down vote

tarfile module is cool:  http://docs.python.org/library/tarfile.html

link | flag

answered  Jan 9 at 5:01

jspcal
8,135 4 17

add comment

up vote 1 down vote

  import   tarfile
tar = tarfile . open ( "sample.tar.gz" , "w:gz" )
for name in [ "file1" , "file2" , "file3" ]:
    tar . add ( name )
tar . close ()

If you want to create a tar.bz2 compressed file, just replace file extension name with ".tar.bz2" and "w:gz" with "w:bz2".

 


查看更多关于python压缩与解压缩的详细内容...

  阅读:74次

上一篇: 我python,我happy

下一篇:python网店