小编pyN*_*bie的帖子

python subprocess.Popen stdin.write

我是 python 新手,想打开 Windows cmd 提示符,启动一个进程,让该进程保持运行,然后向同一正在运行的进程发出命令。

命令将会改变,所以我不能只将这些命令包含在下面的 cmdline 变量中。另外,该进程需要 10-15 秒才能启动,因此我不想每次都浪费时间等待进程启动和运行命令。只想启动一次进程。并根据需要在同一进程中运行快速命令

我希望用它subprocess.Popen来完成这项工作,尽管我对更好的方法持开放态度。请注意,我要运行的进程不是 cmd,但我只是以此为例

import subprocess
cmdline = ['cmd', '/k']
cmd = subprocess.Popen(cmdline, stdin=subprocess.PIPE, stdout=subprocess.PIPE)

cmd.stdin.write("echo hi")       #would like this to be written to the cmd prompt
print cmd.stdout.readline()      #would like to see 'hi' readback

cmd.stdin.write("echo hi again") #would like this to be written to the cmd prompt
print cmd.stdout.readline()      #would like to see 'hi again' readback
Run Code Online (Sandbox Code Playgroud)

结果不是我所期望的。似乎 stdin.write 命令实际上并未进入,并且 readline 冻结,没有任何内容可读取。

我尝试过popen.communicate()使用 write/readline 代替,但它会终止该进程。我尝试在 Popen 行中设置 …

python stdin popen

5
推荐指数
1
解决办法
2万
查看次数

标签 统计

popen ×1

python ×1

stdin ×1