首页 > 解决方案 > Windows 上的 Python 子进程

问题描述

我有一个 Windows 可执行文件,我试图在 Windows 2016 服务器上的 python 脚本中运行它。基本上,我这样做:

import subprocess

myCmd = 'run.exe foo'
result = subprocess.run(myCmd) # tried it with & without shell=True

如果我从 python 或 ipython shell 运行它,它工作得很好。如果我从脚本运行它,它什么也不做,但它给出的返回码为 0 (result -> CompletedProcess(args='run.exe foo', returncode=0)。

显然我做错了什么:(。有人能指出我正确的方向吗?

标签: pythonsubprocess

解决方案


你确定你在正确的目录中,所以它可以找到run.exe吗?你可以尝试把完整的路径run.exe

编辑:根据https://docs.python.org/3/library/subprocess.html#subprocess.run您需要运行subprocess.run(myCmd.split(' ')),或者subprocess.run([myCmd], shell=True)如果您根据用户输入制作 myCmd,后者可能会使您面临 shell 注入漏洞


推荐阅读