Python 即使脚本打印结果为空,communicate()也会返回(None,None)
我对Popen.communicate()有问题 我有返回字符串的脚本 然后我写了第二个脚本,它接受这个变量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,则需要使用
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吗?