Python 即使脚本打印结果为空,communicate()也会返回(None,None)

Python 即使脚本打印结果为空,communicate()也会返回(None,None),python,shell,Python,Shell,我对Popen.communicate()有问题 我有返回字符串的脚本 然后我写了第二个脚本,它接受这个变量 v = "./myscript arg1 arg2" com = subprocess.Popen(v, shell=True).communicate() print com com返回(无,无)。关键是我可以在第一个脚本中打印结果, 外壳打印结果也是如此。我不能把那个打印分配给变量 当然,第一个脚本返回值,而不是打印它。来自: 请注意,如果要将数据发送到进程的stdin,则需要使用

我对Popen.communicate()有问题

我有返回字符串的脚本

然后我写了第二个脚本,它接受这个变量

v = "./myscript arg1 arg2"
com = subprocess.Popen(v, shell=True).communicate()
print com
com返回(无,无)。关键是我可以在第一个脚本中打印结果, 外壳打印结果也是如此。我不能把那个打印分配给变量

当然,第一个脚本返回值,而不是打印它。

来自:

请注意,如果要将数据发送到进程的stdin,则需要使用
stdin=PIPE
创建
Popen
对象。类似地,要在结果元组中获得除
None
之外的任何内容,您还需要给出
stdout=PIPE
和/或
stderr=PIPE

因此,使用以下内容创建
Popen
对象:

subprocess.Popen("./myscript arg1 arg2", shell=True,
                 stdout=subprocess.PIPE, stderr=subprocess.PIPE)

谢谢这是向前的一步,但现在我得到的是空字符串--懒惰的答案没有指定在哪里添加
stdout=PIPE
stderr=PIPE
@N8TRO同样的懒惰答案也在Python官方文档中给出!!不幸的是,
stdout=PIPE
阻止实时输出显示在屏幕上。最简单的方法是什么?如果要使用标准输出将结果从
myscript
传回Python脚本,您不需要
myscript
将内容打印到STDOUT吗?