gpt4 book ai didi

Python 7-Zip 子进程 - WindowsError : [Error 5] Access is denied

转载 作者:行者123 更新时间:2023-12-01 03:28:51 25 4
gpt4 key购买 nike

我在 Python 2.7 脚本中收到“WindowsError:[错误 5] 访问被拒绝”错误。访问被拒绝消息后没有列出任何文件夹。我不是管理员,但为目标 .7z 文件和输出文件夹设置了完整的读/写/执行/修改安全性。相关代码如下:

if os.path.isfile(os.path.join(outRoot[0], outRoot[1] + "_photos.7z")):
#Unzip photo folder
import subprocess
source = outFolder + "_photos.7z"
pw = ''
subprocess.call(['"C:\\Program Files\\7-Zip\\7z.exe" x ' + source + ' -o' + outRoot[0] + ' -p' + pw])

最佳答案

您将一个包含单个条目的列表传递给 call(),但它应该是每个命令行选项的一个条目,即

subprocess.call([
'C:\\Program Files\\7-Zip\\7z.exe',
'x',
source,
'-o' + outRoot[0],
'-p' + pw
])

列表语法就在那里,因此您不必自己引用。子流程将为您做到这一点。

你的代码所做的就是告诉Python将整个命令行解释为要调用的程序的名称;当然,这会失败。

更新:7-Zip 似乎不喜欢选项名称后面有空格。相应地更新了上面的示例代码。这不是 Python 问题,但它很好地演示了执行命令行的列表语法是如何工作的。列表中的每个元素都被视为单个选项,并根据需要加引号(例如,如果它包含空格)。选项由空格分隔。

为了进行调试,您可以将命令列表传递给 subprocess.list2cmdline() 以查看从内部列表创建的字符串。

关于Python 7-Zip 子进程 - WindowsError : [Error 5] Access is denied,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41169105/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com