None 在重定向的标准输出中
None in redirected stdout
我有以下代码的这一部分:
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"
但控制台中的 'output' 变量显示 'none'
************************************************
None
************************************************
我做错了什么?
sys.stdout.write(line)
returns stdout 上写入的字符数。
你可以这样写你的循环:
output = ""
for line in iter(p.stdout.readline, ''):
output += line
sys.stdout.write(line)
恕我直言,您也可以删除 sys.stdout.write(line)
部分。但是我不知道你打算用它做什么所以...
尝试 output += line
而不是 output = sys.stdout.write(line)
您也可以尝试函数 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
在大多数情况下,它可以简单地完成工作。
我有以下代码的这一部分:
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"
但控制台中的 'output' 变量显示 'none'
************************************************
None
************************************************
我做错了什么?
sys.stdout.write(line)
returns stdout 上写入的字符数。
你可以这样写你的循环:
output = ""
for line in iter(p.stdout.readline, ''):
output += line
sys.stdout.write(line)
恕我直言,您也可以删除 sys.stdout.write(line)
部分。但是我不知道你打算用它做什么所以...
尝试 output += line
而不是 output = sys.stdout.write(line)
您也可以尝试函数 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
在大多数情况下,它可以简单地完成工作。