2014-10-28 76 views
3

如何在python中提取7z zip文件。請讓我知道是否有任何庫文件。如何在Python 2.7.3版本中提取7z zip文件

我已經在python 2.7.3版本中安裝了libarchive庫。但我無法使用該庫。

+1

請提供有關該問題的更多詳細信息。爲什麼你不能使用圖書館? – 2014-10-28 07:55:11

+0

libarchive庫安裝在site-packeges下。例如C:\ Python27 \ Lib \ site-packages \ libarchive-0.4.3-py3.2.egg \ libarchive Archive.reader模塊不存在。如何使用確切的類 – 2014-10-28 08:25:49

+0

看看我在解壓縮代碼在ScanCode這裏:https://github.com/nexB/scancode-toolkit/blob/e45f8f401ca22a15fda6a78dff317e8acf94038e/src/extractcode/sevenzip.py這是一個命令行的包裝7zip for Windows/Linux/Mac – 2016-05-12 05:08:02

回答

3

您可以使用PyLZMApy7zlib庫來提取7z文件或嘗試執行shell腳本以使用python subprocess模塊提取zip文件。

+0

請分享我如何在python 2.7.3版本中安裝PyLZMA和py7zlip庫。 – 2014-10-28 08:25:17

+0

對於Windows,您可以使用http://www.lfd.uci.edu/~gohlke/pythonlibs/#pylzma庫,但對於Linux,我認爲您應該自己從源代碼構建它。但看看http://www.joachim-bauch.de/projects/pylzma/ – 2014-10-28 08:33:47

+1

謝謝我已經安裝在windows.Please分享給我任何7z拉鍊提取的例子,這將是對我有幫助 – 2014-10-28 08:41:14

2

我在我的C++項目中使用像C:\Program Files\7-Zip\7z.exe x <filename>這樣的命令。您可以在Python這樣運行這個程序:

import subprocess 
subprocess.call(r'"C:\Program Files\7-Zip\7z.exe" x ' + archive_name + ' -o' + folder_name_to_extract) 

或32位版本:

subprocess.call(r'"C:\Program Files (x86)\7-Zip\7z.exe" x ' + archive_name + ' -o' + folder_name_to_extract) 
0

按照Python doc (about the subprocess),你可能寧願使用建議報告功能運行(如本爲例)。

from subprocess import run 
run('C:\\Program Files\\7-Zip\\7zG.exe x'+ archive_name + ' -o' + folder_name_to_extract)` 

PS0:一書於,不要忘了逃脫的完整路徑的字符;它可以在Windows下特別提供幫助。否則操作系統找不到7zip(或其他程序)。

PS1:很顯然,評論很難寫......顯示效果不一樣(就像只將所有文本分組在一行中一樣),並通過觸摸輸入,帖子將被髮布(未完成)。來自stackoverflow.com的系統是錯誤的,因爲我想只添加幾行而不發佈它。也因爲沒有,此刻,我還沒有寫完(這篇文章)。

0

這在Windows中適用於我。你想拍攝的字符串是這樣的:

C:/Egain_ETL/7-Zip/7z.exe e "C:/Egain_ETL/EG_DATA_EXTRACT_2017-11-25 09-45-10-627.7z" -p"[email protected]" -o"C:/Egain_ETL/" 

通知調用的exe和選項是不帶引號的,其他一切都是用雙引號。

示例代碼

import subprocess 

Z_Location = 'C:/Egain_ETL/7-Zip/7z.exe' 
Extract_File = 'C:/Egain_ETL/EG_DATA_EXTRACT_2017-11-25 09-45-10-627.7z' 
Extract_PW = '[email protected]' 
Extact_Folder = 'C:/Egain_ETL/' 

Extract_Target = Z_Location + ' e ' + '"' + Extract_File + '"' + ' -p' + '"' + Extract_PW + '"' + ' -o' + '"' + Extact_Folder + '"' 

subprocess.run(Extract_Target)