gpt4 book ai didi

python - 如何在没有 shell=True 的情况下使用 subprocess.call

转载 作者:可可西里 更新时间:2023-11-01 09:48:23 25 4
gpt4 key购买 nike

The documents建议不要将 subprocess.callshell=True 一起使用,但是当我尝试做一些像

这样简单的事情时
call(['convert'])

我得到一个错误:

Must specify a file system

当我通过 cmd.exe 运行相同的命令时,我得到

C:\Users\Mark>convert
Version: ImageMagick 6.7.3-6 2011-11-10 Q16 http://www.imagemagick.org
...

等,即它实际运行。

那么 call 在做什么?为什么要找文件?

是否需要 .exe 的完整路径?如果是这样,我宁愿不这样做,因为我不知道所有 .exe 文件的位置。


只需使用程序的完整文件路径 (call(['C:/imagemagick/convert.exe'])) 进行尝试,就可以了。但问题仍然存在......没有完整路径你怎么办?让它从工作目录执行?

最佳答案

我相信 dir 是 cmd.com 的内置函数,而不是一个独立的程序。您将需要 shell=True 或提供与 dir 类似功能的程序(例如 unixtools 中的 ls.exe 程序)。

您的编辑更新:您正在处理的内容听起来与此处描述的已知问题/错误完全相同:http://bugs.python.org/issue8557在这里 python subprocess Popen environment PATH?

在 win32 下,shell=False 时 subprocess.call 的行为似乎很奇怪。似乎至少您需要使用 convert.exe 而不是 convert 并且您需要 search PATH yourself .

关于python - 如何在没有 shell=True 的情况下使用 subprocess.call,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10826668/

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