【发布时间】:2022-11-11 01:49:39
【问题描述】:
假设我在 python 中运行一个 .exe 程序,无论操作系统或子进程,.exe 程序旨在弹出一些具有不同参数的不同结果,我的步骤如下:
- 在python中先运行.exe(让它活着,它会有通信 使用硬件并进行初始化)
- 发送不同的参数到 这个 .exe 并收集不同的输出。
我尝试了以下代码: 你好.py 导入系统
for arg in sys.argv: print(arg) print("Hello World!")测试.py
import subprocess command='./exe_example/output/hello/hello.exe a b'.split() result = subprocess.run(command, stdout=subprocess.PIPE, text=True) print(result.stdout)输出是:
a b 你好,世界!
但是如何在不再次运行整个 .exe 命令的情况下更改输入 argv 并获得结果?
更新:我将 hello.py 更改如下:
import sys while True: a = input() print('response = ',a)编译成.exe后,可以在dos窗口手动运行
hello.exe a response = a b response = b c response = c但我仍然不知道如何在 python 中运行它
【问题讨论】:
-
argv输入在程序启动时从命令行读取一次。您无法在应用程序运行时发送它们,因为它们在应用程序启动时不在命令行中。如果您需要测试不同的参数,则需要从一开始就多次运行应用程序。 -
谢谢,还有什么办法可以解决这个问题吗?在这种情况下,.exe 程序应该看起来像一个 com 端口,所以我可以不断向该端口发送不同的命令,并收到不同的结果
-
然后你必须在其中构建一个通信层,并编写一个单独的应用程序通过该层发送命令。
-
谢谢,你能发一个示例链接吗?我完全不知道该怎么做
-
我没有。你和我一样有能力寻找,而我不需要它。 :-)
标签: python-3.x