- 論壇徽章:
- 1
|
本帖最后由 jeppeter 于 2013-04-25 10:08 編輯
- #! python
- import zipfile
- import sys
- import os
- def UpdateTarFile(tarfname,inputfiles):
- tarf = zipfile.ZipFile(tarfname,"a")
- nl = tarf.namelist()
- update = 0
- for f in inputfiles:
- if f in nl:
- update = 1
- break
- if update == 0:
- for f in inputfiles:
- tarf.write(f)
- else:
- newfname = '%s.tmp'%(tarfname)
- newtarf = zipfile.ZipFile(newfname,"a")
- for f in nl:
- if f not in inputfiles:
- s = tarf.read(f)
- newtarf.writestr(f,s)
- else:
- newtarf.write(f)
- # remove it
- inputfiles.remove(f)
- for f in inputfiles:
- newtarf.write(f)
- tarf.close()
- if update :
- newtarf.close()
- # now to move it
- os.remove(tarfname)
- os.rename(newfname,tarfname)
- return
- if __name__ == '__main__':
- if len(sys.argv) < 3:
- sys.stderr.write('%s tarfile updatefile'%(__file__))
- sys.exit(3)
- UpdateTarFile(sys.argv[1],sys.argv[2:])
復(fù)制代碼 這個(gè)代碼測試通過,不要忘記給分. |
|