1

我正在使用 python 自动提取档案。我正在使用子流程:

command = "7z e " + self.dir + " -o" + dest
subprocess.call(command)

其中 self.dir 是存档的目录(作为 .rar 文件),而 dest 是目标文件夹。

我的问题是它的工作很随意。出于某种原因,它会很好地提取一些档案,但不能提取其他档案。我还没有找到模式,但我已经阅读了命令提示符,当它不起作用时,它会打印

Error:
cannot find archive

烦人的是,我可以使用 GUI 提取完全相同的存档。我的实际程序似乎有问题。

我能做些什么来解决这个问题?

4

3 回答 3

1

我认为subprocess.call()在传递参数时需要一个列表。尝试这个:

command = ["7z", "e", self.dir, "-o", dest]
于 2012-10-03T12:57:16.770 回答
1

你当前的目录是什么?请检查您的“self.dir”是否为完整文件路径,而不仅仅是相对路径。试试这个来检查:

print os.path.abspath(self.dir)
print os.getcwd()
print os.path.isfile(self.dir)

顺便说一句,使用“dir”作为属性名是不幸的。dir是一个内置函数。

于 2012-10-03T12:52:40.007 回答
1

将引号添加到您的目录字符串。您可能有混淆 zip 程序的空格。

于 2015-05-03T18:19:14.580 回答