0
爲什麼「subprocess.Popen.stdin.write」命令看起來失敗?寫入subprocess.Popen.stdin不能正確執行
#!/usr/bin/env python3
# coding=utf-8
import os
import subprocess
bash = subprocess.Popen(['bash'],
stdout=subprocess.PIPE, stdin=subprocess.PIPE,
stderr=subprocess.PIPE, shell=True)
(殼=真:見編輯2)
bash.stdin.write(b'echo foo\n')
print(bash.stdout.readline())
bash.stdin.write(b'echo bar\n')
print(bash.stdout.readline())
編輯:它會阻止在第一subprocess.Popen.stdout.readline(),可能是因爲在subprocess.Popen沒有線.stdout。它應該打印出來:
foo
bar
編輯2:這仍然掛起。
您是否收到任何錯誤訊息?它做什麼和它應該做什麼? – Adam
它不會這樣做。 bash有許多執行模式,你要找的是shell模式。你可以做的是在調用'Popen'時執行'shell = True',但是你會創建一個安全漏洞。你應該檢查文檔:https://docs.python.org/2/library/subprocess.html – HuStmpHrrr
你會做什麼bash?顯然它看起來對我很有用,就像這樣,因爲當它在shell模式下啓動時,你的bash會打印其中的一些內容。另一個解決方案是'ptty',它更正確但更復雜。如果你想做正確的事情,你也會想檢查一下。 – HuStmpHrrr