Popen.communicate() returns (None, None) even if s

2019-06-17 12:45发布

I have problem with Popen.communicate().

I have script which return string.

Then I have wrote second script which takes that variable.

v = "./myscript arg1 arg2"
com = subprocess.Popen(v, shell=True).communicate()
print com

com returns (None, None). The point is that I can print inside first script the results, shell print result as well. I can't just assign that print to variable.

Of course first script returns value, not print it.

标签: python shell
1条回答
萌系小妹纸
2楼-- · 2019-06-17 13:20

From the docs:

Note that if you want to send data to the process’s stdin, you need to create the Popen object with stdin=PIPE. Similarly, to get anything other than None in the result tuple, you need to give stdout=PIPE and/or stderr=PIPE too.

Hence, create the Popen object with:

subprocess.Popen("./myscript arg1 arg2", shell=True,
                 stdout=subprocess.PIPE, stderr=subprocess.PIPE)
查看更多
登录 后发表回答