我正在尋找一種方法來保存寫入zipfile.ZipFile
實例的文件的文件屬性(例如,只讀)。在ZipFile中保留文件屬性
我添加到zip歸檔文件的文件將重置它們的文件屬性,例如。在使用zip應用程序檢查歸檔文件並解壓縮後,只讀標誌消失。
我目前的環境是Windows,我遇到了ZipInfo.external_attr方法的問題。
當寫信給ZipFile
時,肯定有一個標準的保存文件屬性的方法嗎?
我正在尋找一種方法來保存寫入zipfile.ZipFile
實例的文件的文件屬性(例如,只讀)。在ZipFile中保留文件屬性
我添加到zip歸檔文件的文件將重置它們的文件屬性,例如。在使用zip應用程序檢查歸檔文件並解壓縮後,只讀標誌消失。
我目前的環境是Windows,我遇到了ZipInfo.external_attr方法的問題。
當寫信給ZipFile
時,肯定有一個標準的保存文件屬性的方法嗎?
我遇到的問題是大量沒有記錄的zipfile.ZipInfo.external_attr。我發現這個對象的所有例子都重新編譯爲* nix文件權限樣式。
我的實現將在Windows上運行。
所以我去了一些「逆向工程」。嘿。
神奇的數字窗戶只讀ZipInfo.external_attr是33
如:
z = zipfile.ZipFile(targetFile, 'w')
(path, filename) = os.path.split(sourceFile)
bytes = file(sourceFile, 'rb')
info = zipfile.ZipInfo(filename)
info.external_attr = 33
z.writestr(info, bytes.read())
bytes.close()
z.close()
如果你需要找到另一種類型屬性的正確值創建壓縮文件,你想要它與一些Windows壓縮應用程序,並運行它:
z = zipfile.ZipFile(sourceFile, 'r')
info = z.getinfo('fileToTest.ext')
print ("create_system", info.create_system)
print ("external_attr", info.external_attr)
print ("internal_attr", info.internal_attr)
乾杯!
另請參閱http://stackoverflow.com/questions/434641/how-do-i-set-permissions-attributes-on-a-file-in-a-zip-file-using-pythons-zipf/6297838#6297838 。你對沒有記錄的external_attr字段是正確的。 – 2011-06-09 19:05:59
我在Windows中使用「minizip」預先保存所有文件屬性時遇到了同樣的問題。我用下面的代碼:DWORD attribs = GetFileAttributesW(szOut); \t \t zi.external_fa = attribs; – 2013-03-05 07:48:23
請編輯您的問題並解釋「我遇到問題」。否則,我們無法幫助。 – 2010-06-09 15:29:46
原始問題有效。這僅僅是關於stackoverflow diddnt工作的解決方案,因爲我沒有爲unix實現。 雖然不好說明,但需要注意。 – Elijah 2010-06-10 14:48:25