我是 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 行中设置 …