首页 > 解决方案 > 从 Python 运行文本并将其传送到 .exe 文件中

问题描述

我正在尝试从 python 运行一个 .exe 文件并将一个字符串导入其中。.exe 本身会打开一个命令框,需要一系列字符串输入,这些输入可以在一系列行中一次性输入(如下所示)

在 bash 中,解决方案是:

printf "test.dat\nMoreinput\nMoreinput"  | ~/Desktop/Median_filt_exes/ascxyz.exe

为了在 python 中重新创建它,我尝试过:

from subprocess import Popen, PIPE
p = Popen(r"./ascxyz.exe", stdin=PIPE,text=True)
p.communicate("test.dat\nMoreinput/nMoreinput")

没有错误,但它似乎不起作用(.exe 应该在成功运行时创建一个新文件)。对于我能做些什么来弄清楚为什么 exe 不能正常运行的任何帮助将不胜感激!

标签: pythonpipe

解决方案


直接的问题可能是您没有用换行符终止输入。但你真的也不想Popen自己做管道。

from subprocess import run
run(['./ascxyz.exe'], text=True,
  input="test.dat\nMoreInput\nMoreInput\n")

还要注意我们如何传入一个列表作为第一个参数,以避免shell=True.


推荐阅读