2014-10-28 72 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)