python - 从 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 不能正常运行的任何帮助将不胜感激!
解决方案
直接的问题可能是您没有用换行符终止输入。但你真的也不想Popen
自己做管道。
from subprocess import run
run(['./ascxyz.exe'], text=True,
input="test.dat\nMoreInput\nMoreInput\n")
还要注意我们如何传入一个列表作为第一个参数,以避免shell=True
.
推荐阅读
- asp.net - 在 aspnet 核心中使用策略覆盖 AuthorizeAttribute
- php - Symfony:项目创建
- javascript - Python mkdir() '没有这样的文件或目录' w/ NodeJS
- r - 在现有 geo_histogram 中添加 geom_freqpoly
- python - 我的 Discord.py 调平系统问题 - 传奇
- apache-kafka - 同步Kafka生产者是否有任何例外
- jersey - 类型 javax.ws.rs.core.Form 的 Resteasy 抛出错误 RESTEASY003215
- azure-active-directory - 测试 - Azure AD 是否支持 ABAC(基于属性的访问控制)?
- rust - 关联类型的等式约束的替代方法
- r - 在ggplot中循环时获取X轴的变量名称?