亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2740 | 回復(fù): 3
打印 上一主題 下一主題

python壓縮文件時(shí),如果文件已經(jīng)存在了,能不能做覆蓋處理 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2013-04-24 17:05 |只看該作者 |倒序?yàn)g覽
5可用積分
在使用tarfile和zipfile時(shí), 用讀寫的方式打開 ,在對(duì)一個(gè)壓縮持續(xù)壓入文件, 如用tarfile.add或者 zipfile.write寫入壓縮包,

我希望能夠達(dá)到這樣的一個(gè)效果, 如果兩入壓入同一個(gè)文件,就把前一次壓入的覆蓋掉,但我發(fā)現(xiàn)實(shí)際不是這樣的,而壓縮包里出現(xiàn)了兩個(gè)同名的目錄文件。

請(qǐng)問python有沒有參數(shù)可以支持這種覆蓋寫入呢,謝謝!

如:tar包中已經(jīng)有 /a/b/c/a.txt 和 /a/b/d/a.txt, 現(xiàn)在我又壓入一個(gè)a.txt到/a/b/c目錄下, 要替換掉原有的a.txt。  

最佳答案

查看完整內(nèi)容

這個(gè)代碼測試通過,不要忘記給分.

論壇徽章:
1
15-16賽季CBA聯(lián)賽之新疆
日期:2017-03-09 12:33:45
2 [報(bào)告]
發(fā)表于 2013-04-24 17:05 |只看該作者
本帖最后由 jeppeter 于 2013-04-25 10:08 編輯
  1. #! python

  2. import zipfile
  3. import sys
  4. import os



  5. def UpdateTarFile(tarfname,inputfiles):
  6.         tarf = zipfile.ZipFile(tarfname,"a")
  7.         nl = tarf.namelist()
  8.         update = 0
  9.         for f in inputfiles:
  10.                 if f  in nl:
  11.                         update = 1
  12.                         break
  13.         if update == 0:
  14.                 for f in inputfiles:
  15.                         tarf.write(f)
  16.         else:
  17.                 newfname = '%s.tmp'%(tarfname)
  18.                 newtarf = zipfile.ZipFile(newfname,"a")
  19.                 for f in nl:
  20.                         if f not in inputfiles:
  21.                                 s = tarf.read(f)
  22.                                 newtarf.writestr(f,s)
  23.                         else:
  24.                                 newtarf.write(f)
  25.                                 # remove it
  26.                                 inputfiles.remove(f)
  27.                 for f in inputfiles:
  28.                         newtarf.write(f)
  29.         tarf.close()
  30.         if update :
  31.                 newtarf.close()
  32.                 # now to move it
  33.                 os.remove(tarfname)
  34.                 os.rename(newfname,tarfname)
  35.         return


  36. if __name__ == '__main__':
  37.         if len(sys.argv) < 3:
  38.                 sys.stderr.write('%s tarfile updatefile'%(__file__))
  39.                 sys.exit(3)
  40.         UpdateTarFile(sys.argv[1],sys.argv[2:])

復(fù)制代碼
這個(gè)代碼測試通過,不要忘記給分.

論壇徽章:
16
IT運(yùn)維版塊每日發(fā)帖之星
日期:2015-10-02 06:20:00IT運(yùn)維版塊每月發(fā)帖之星
日期:2015-09-11 19:30:52IT運(yùn)維版塊每周發(fā)帖之星
日期:2015-09-11 19:20:31IT運(yùn)維版塊每日發(fā)帖之星
日期:2015-08-26 06:20:00每日論壇發(fā)貼之星
日期:2015-08-20 06:20:00IT運(yùn)維版塊每日發(fā)帖之星
日期:2015-08-20 06:20:002015年辭舊歲徽章
日期:2015-03-03 16:54:15金牛座
日期:2014-05-04 16:58:09雙子座
日期:2013-12-17 16:44:37辰龍
日期:2013-11-22 15:20:59獅子座
日期:2013-11-18 22:55:08射手座
日期:2013-11-12 10:54:26
3 [報(bào)告]
發(fā)表于 2013-04-24 18:05 |只看該作者
本帖最后由 wenhq 于 2013-04-24 18:23 編輯

     
帶下面的參數(shù)
  -u, --update
              only append files that are newer than the existing in archive

好像沒有吧。
你可以調(diào)用unix 命令用上面參數(shù)實(shí)現(xiàn)。

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2013-04-24 19:50 |只看該作者
樓上-u參數(shù)用在哪個(gè)方法里呢??  不能用系統(tǒng)命令,要考慮移植性
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP