Python Popen 困难:找不到文件

发布于 2024-07-29 05:48:34 字数 395 浏览 4 评论 0原文

我正在尝试使用 python 来运行程序。

from subprocess import Popen 
sa_proc = Popen(['C:\\sa\\sa.exe','--?'])

运行这个小片段会出现错误:

WindowsError: [错误2]系统找不到指定的文件

存在,我已直接从资源管理器复制并粘贴exe的绝对路径。 我尝试过其他方法,发现如果我将 EXE 与 python 脚本一起放在源文件夹中并使用“./sa.exe”,那么它就可以工作。 我唯一能想到的是我正在从一个单独的分区(F:)运行 python 脚本(和 python)。

有任何想法吗? 谢谢

I'm trying to use python to run a program.

from subprocess import Popen 
sa_proc = Popen(['C:\\sa\\sa.exe','--?'])

Running this small snippit gives the error:

WindowsError: [Error 2] The system cannot find the file specified

The program exists and I have copy and pasted directly from explorer the absolute path to the exe. I have tried other things and have found that if I put the EXE in the source folder with the python script and use './sa.exe' then it works. The only thing I can think of is that I'm running the python script (and python) from a separate partition (F:).

Any ideas?
Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

囚我心虐我身 2024-08-05 05:48:34

正如 文档 所说,“在 Windows 上:Popen类使用 CreateProcess() 来执行子程序,该子程序对字符串进行操作,如果 args 是序列,则将使用 list2cmdline() 方法将其转换为字符串。”。 也许这个方法把事情搞砸了,所以为什么不尝试更简单的方法:

sa_proc = Popen('C:\\sa\\sa.exe --?')

如果仍然失败,那么:在尝试这个之前,os.environ['COMSPEC'] 是什么? 如果将 , shell=True 添加到 Popen 的参数中,会发生什么?

编辑:结果显然是一个简单的拼写错误,因为“sa”实际上是拼写为 SpamAssassin 的程序——double s 两次——而 OP 写的是 spamassasin——一个双 s,但第二次是单 s。

As the docs say, "On Windows: the Popen class uses CreateProcess() to execute the child program, which operates on strings. If args is a sequence, it will be converted to a string using the list2cmdline() method.". Maybe that method is messing things up, so why not try the simpler approach of:

sa_proc = Popen('C:\\sa\\sa.exe --?')

If this still fails, then: what's os.environ['COMSPEC'] just before you try this? What happens if you add , shell=True to Popen's arguments?

Edit: turns out apparently to be a case of simple mis-spellling, as 'sa' was actually the program spelled SpamAssassin -- double s twice -- and what the OP was writing was spamassasin -- one double s but a single one the second time.

闻呓 2024-08-05 05:48:34

您可能没有执行 C:\sa\sa.exe 的权限。 您是否尝试过手动运行该程序?

You may not have permission to execute C:\sa\sa.exe. Have you tried running the program manually?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文