加入tar中間過程:
#
?-*-?coding:utf-8?-*-
#
=============================================================================================================
#
#
???brief???:????制作viruswall?的離線升級數據
#
#
???author??:????hechangmin
#
#
???date????:????2008.6?
#
#
???notice??:????先變成tar?文件
#
=============================================================================================================
import
?os
import
?threading,?zipfile
import
?tarfile

class
?AsyncZip(threading.Thread):
????
????
def
?
__init__
(self,?infile,?outfile):
????????threading.Thread.
__init__
(self)????????
????????self.infile?
=
?infile
????????self.outfile?
=
?outfile
????
def
?run(self):
????????state?
=
?
'
w
'
????????
if
?os.path.isfile(self.outfile)?
==
?True:
????????????state?
=
?
'
a
'
????????f?
=
?zipfile.ZipFile(self.outfile,?state,?zipfile.ZIP_DEFLATED)
????????f.write(self.infile)
????????f.close()
????????
print
?
'
Finished?background?zip?of:?
'
,?self.infile
????????
def
?zipDir(src,dst):
????
????initPath?
=
?os.getcwd()
????
????tempDST?
=
??os.path.join(os.getcwd(),dst)
????tempSRC?
=
??os.path.join(os.getcwd(),src)
????os.chdir(?tempSRC?)
????files?
=
?os.listdir(os.curdir)
????tar?
=
?tarfile.open(
"
temp.tar
"
,
"
w
"
)
????
for
?file?
in
?files:
????????tar.add(file)
????tar.close()
????background?
=
?AsyncZip(
"
temp.tar
"
,dst)
????background.start()
????background.join()????
#
?Wait?for?the?background?task?to?finish
????????
????os.chdir(?initPath?)
????
print
?os.getcwd()
#
test?ok
if
?
__name__
?
==
?
'
__main__
'
:
????
????zipDir(
"
D:\\AutoUpdate\\DataDist\\viruswall\\Data\\KSVW-VirusDB\\
"
,
"
d:\\AutoUpdate\\DataDist\\viruswall\\Data\\update\\KSVW-VirusDB.tgz
"
)
????
當然還不夠,因為這里雖然加入了tar環節,但是最后還是zip壓縮。
posted on 2008-06-26 09:52
-274°C 閱讀(560)
評論(0) 編輯 收藏 所屬分類:
python