2011-08-16 50 views
2

我使用zip文件模塊使用Pythonzip文件Python模塊bytesize差異

urllib.urlretrieve()

文件的zip文件是由bsdiff創建補丁文件時,解壓我從互聯網上檢索到的壓縮文件,但是我讓python解壓zip文件並嘗試使用bspatch它說損壞的補丁文件。當我使用7-zip手動提取zip文件覆蓋修補程序文件,然後運行修補程序時,它的修補程序正常。我還注意到手動覆蓋這些文件時,字節大小不同。

一個應該是195個字節,但爲196個字節,一個應當是20656個字節,但是20781個字節,一個是正確的大小(這是哪些補而不損壞補丁信息的僅一個)

代碼我「M使用來提取是:

z = zipfile.ZipFile('patchfiles.zip', 'r', zipfile.ZIP_DEFLATED) 
    z.printdir() 
    for info in z.infolist(): 
     if not os.path.isdir(patchdir): 
        os.mkdir(patchdir) 
     fname = info.filename 
     data = z.read(fname) 
     dest = os.path.join(patchdir, fname) 
     data = z.read(fname) 
     f = open(dest, 'w') 
     f.write(data) 
     f.close() 
    z.close() 

zip文件是使用正常放氣壓縮,我甚至只使用一個與ZIP_STORED只是7zip的壓縮和解它作爲一個存儲的文件試過。

任何想法?

+0

你能發佈壓縮文件的網址嗎? –

+0

這裏是:http://m0rph3v5.com/patchfiles.zip – M0rph3v5

+0

僅供參考,在Ubuntu盒子上運行你的代碼時,輸​​出文件的大小是正確的。 –

回答

5

這是在Windows上嗎?也許嘗試f = open(dest, 'wb')

只能在Windows中,b使文件系統處理該文件爲二進制,而不是純文本,而不是亂用行尾。在其他系統上,沒有任何區別(並且b被默默忽略)。

+0

+1:好猜! –

+0

我確實在窗戶上,歡呼:) – M0rph3v5