python - 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)。
显然我做错了什么:(。有人能指出我正确的方向吗?
解决方案
你确定你在正确的目录中,所以它可以找到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 注入漏洞
推荐阅读
- node.js - 在节点 js 中使用 socket.io 的聊天应用程序
- mysql - 如何计算 MySQL 中逗号分隔字符串中子字符串的出现次数
- python - 当在同一方法中以其他方式使用时,变量被不同地对待
- assembly - 在 x86 和 x86_64 处理器中可以自由修改段寄存器吗?
- c# - C# webBrowser1 如何按类获取元素?
- r - 如何使用 Shiny 中的单选按钮以不同方式处理数据?
- flutter - 如何为 Appbar 上的开关添加填充?
- c# - 使用 c# 从特定行获取列值并通过 linq 转换为 xml
- c# - 增加一个物体的速度,直到它到达某个点,然后降低它。C#
- javascript - oAuth2.0 实现