- 论坛徽章:
- 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:])
复制代码 这个代码测试通过,不要忘记给分. |
|