2014-10-04 99 views
0

我想以獨立於平臺的方式遞歸地將目錄壓縮到密碼加密的7zip壓縮文件中。如何將目錄壓縮爲7zip密碼加密存檔?

我認爲使用這些方法,但他們沒有,我發現接受:

  1. 直接調用使用subprocess 7zip的可執行文件 - 這個偉大的工程,但它不是獨立於平臺。

  2. 使用pylzma/py7zlib模塊 - 它們只對已經在內存中的數據起作用,我無法想象如何使用它們來壓縮目錄。

+0

我想你不想走目錄樹並將所有內容都讀入內存來壓縮它。 :)另一種方法是討論[這裏](http://stackoverflow.com/questions/13130634/compress-a-folder-recursively-as-7z-with-pylzma-and-py7zlib) – 2014-10-04 12:22:46

+0

@ PM2Ring不,連接文件在記憶不是我的意圖。我只是尋找一個右鍵單擊目錄 - > 7-Zip - >添加到檔案的腳本變體。您發佈的鏈接不會討論密碼保護或加密,答案並未提及7-Zip。 – 2014-10-04 13:09:58

+0

不,它不完全是7-Zip:鏈接的方法會創建一個LZMA壓縮tar歸檔文件,它應該提供與標準7zip文件類似的壓縮比率。但是,它當然需要定製軟件來讀寫。我對各種Python LZMA模塊並不熟悉,但是我通過Google的快速查看發現,它們不提供密碼保護/加密。當然,增加這種保護本身並不難,但再一次,它不會與標準的7-Zip實用程序兼容。好吧。 – 2014-10-04 13:26:06

回答

1

據我所見,這是不可能的。但是,如果這些目錄和文件夾是只有將由您編寫的軟件操縱,您可以使用compress-a-folder-recursively-as-7z-with-pylzma-and-py7zlib中顯示的技術創建自己的「自制」7zip版本。這使用tarfile模塊將目錄樹收集到單個文件中,然後使用lzma/pyliblzma模塊執行壓縮。

不幸的是,常見的Python LZMA模塊不提供密碼保護/加密。但是,您可以添加自己的,只需在壓縮之前加密tarfile數據即可。詳情請參閱Encrypt & Decrypt using PyCrypto AES 256

+0

好吧,我最終將路徑傳遞給7z可執行文件作爲我的腳本的參數。 – 2014-10-05 11:32:27