在 Python 中執(zhí)行一個(gè)可執(zhí)行程序茬斧,并且將一個(gè) Python 字符串作為子進(jìn)程的輸入塔拳。
def Run(prog, inputs):
proc = subprocess.Popen([prog],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE)
proc.stdin.write(bytes(inputs, 'utf-8'))
proc.stdin.close()
for line in proc.stdout:
sys.stdout.write(line.decode())
proc.stdout.close()
使用 stdin=subprocess.PIPE
吁伺,就可以將 proc.stdin
當(dāng)作一個(gè)文件類型來寫涛酗。但因?yàn)?Popen
開始時(shí)陌兑,程序就會(huì)開始執(zhí)行沈跨,如果你這之后代碼沒有寫對(duì),錯(cuò)誤信息可能被要運(yùn)行的進(jìn)程的輸出給刷屏兔综。所以這種場景下饿凛,一般會(huì)選擇將子進(jìn)程的輸出捕獲,變成父進(jìn)程的輸出软驰。