用Python提取多部分zip

2024-09-27 07:33:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在寻找一种使用python提取多部分zip文件的方法(例如胡说八道,blah.z01、blah.z02、blah.z03等),无需任何先决条件安装(如7zip)。这个问题已经被问过了,但唯一的答案是使用本地7zip安装,我宁愿避免,而且我没有足够的声誉来添加评论到该线程。在

我正在开发一个独立的Windows桌面应用程序,它的主要功能之一是能够提取给它的zip文件。目前我正在使用一个随工具分发的可移植的7zip(7za)来实现这一点,但是由于一个新的情况,我还需要支持多部分的zip文件,我似乎无法做到这一点。在

我现在的代码是

subprocess.call('7za x -o"'+destinationPath+'" "'+zipPath+'"')

它适用于普通的拉链,但对于多部分拉链,什么都不会发生,通过cmd手动运行它,我得到了输出

^{pr2}$

尽管桌面7zip完全可以使用完全相同的归档文件来完成这项工作。我是否遗漏了7za命令的语法?如果没有,除了要求用户确保他们安装了desktop 7zip并尝试通过注册表检测它的位置之外,还有其他选择吗?在

我也尝试过使用python的Zipfile库,但这让我

error: "BadZipFile: Bad magic number for file header"

正如另一条线所指出的。在

先谢谢你!在


Tags: 文件方法答案先决条件windows评论zip线程
1条回答
网友
1楼 · 发布于 2024-09-27 07:33:47

考虑到您使用的是subprocess.call(),这听起来更像是bash问题而不是python问题。您可能希望cat将各个部分放在一起而不是解压缩,如下所示:

cat test.zip.* >test.zip
unzip test.zip

除了在多个subprocess.call()s中

请看这里:https://unix.stackexchange.com/questions/40480/how-to-unzip-a-multipart-spanned-zip-on-linux

相关问题 更多 >

    热门问题