我对Popen.communicate()有疑问。
我有返回字符串的脚本。
然后我写了第二个脚本来获取该变量。
v = "./myscript arg1 arg2"
com = subprocess.Popen(v, shell=True).communicate()
print com
com返回(无,无)。关键是我可以在第一个脚本里面打印结果, shell打印结果也是如此。我不能只将该打印分配给变量。
当然第一个脚本返回值,而不是打印它。
答案 0 :(得分:9)
来自docs:
请注意,如果要将数据发送到进程的stdin,则需要使用
Popen
创建stdin=PIPE
对象。同样,要在结果元组中获取None
以外的任何内容,您还需要提供stdout=PIPE
和/或stderr=PIPE
。
因此,使用:
创建Popen
对象
subprocess.Popen("./myscript arg1 arg2", shell=True,
stdout=subprocess.PIPE, stderr=subprocess.PIPE)