我有以下代码的这部分:
p = subprocess.Popen(['C:/Python27/python.exe', '-m', 'robot', '-d', logs_directory, input_file], stdout=subprocess.PIPE)
for line in iter(p.stdout.readline, ''):
output = sys.stdout.write(line)
#sys.stdout.write(line)
print "\n\n"
print "************************************************"
print output
print "\n\n"
print "************************************************"
print "\n\n"
但是'输出'控制台中的变量显示'无'
************************************************
None
************************************************
我在这里做错了什么?
答案 0 :(得分:3)
sys.stdout.write(line)
返回写在stdout上的字符数。
你可以像这样编写你的循环:
output = ""
for line in iter(p.stdout.readline, ''):
output += line
sys.stdout.write(line)
imho你也可以删除sys.stdout.write(line)
部分。但是我不知道你的意图是什么......所以...
答案 1 :(得分:1)
尝试使用output += line
代替output = sys.stdout.write(line)
答案 2 :(得分:0)
您也可以尝试使用check_output
函数。
以下是一个例子:
>>> subprocess.check_output(["echo", "Hello World!"])
'Hello World!\n'
您可以尝试:
cmd = ['C:/Python27/python.exe', '-m', 'robot', '-d', logs_directory, input_file]
output = subprocess.check_output(cmd)
print output
在大多数情况下,它可以简单地完成工作。
有关详细信息,您可能需要参考subprocess.check_output