当我在我的Popen中使用stdout和stdin时,我的进程不会运行。
def program():
p = subprocess.Popen(link, shell=True, stdin=subprocess.PIPE, stderr=subprocess.STDOUT)
out = p.communicate(longquery)
print out
当我运行这个时,我的输出为(无,无),尽管我确实有一个输出显示在控制台上。为什么会发生这种情况?如何保存即将发布的输出?
答案 0 :(得分:1)
您需要按the manual:
管道输出数据“在结果元组中得到除None以外的任何东西,你需要给stdout = PIPE和/或stderr = PIPE。”
def program():
p = subprocess.Popen(link, shell=True, stdin=subprocess.PIPE, stderr=subprocess.PIPE, stdout=subprocess.PIPE)
out = p.communicate(longquery)
print out
答案 1 :(得分:0)
您还需要设置stdout=PIPE
。
将您的代码更改为:
from subprocess import Popen, PIPE, STDOUT
def program():
p = Popen(link, shell=True, stdin=PIPE, stderr=STDOUT, stdout=PIPE)
out = p.communicate(longquery)
print out