Python 为什么子流程命令打印0而不是路径?
我是python初学者 我尝试了以下代码。当我运行代码时,它不会给出错误,但预期的输出必须在文件中,而是在控制台上打印输出 在实际的Python 为什么子流程命令打印0而不是路径?,python,Python,我是python初学者 我尝试了以下代码。当我运行代码时,它不会给出错误,但预期的输出必须在文件中,而是在控制台上打印输出 在实际的test.txt文件中,它将条目设置为0 为什么它打印0而不是pwd命令返回的路径 from subprocess import call path = call('pwd') with open('test.txt', "w") as f : f.seek(0) f.write(str(path)) f.close() 如果您想从外部
test.txt
文件中,它将条目设置为0
为什么它打印0而不是pwd
命令返回的路径
from subprocess import call
path = call('pwd')
with open('test.txt', "w") as f :
f.seek(0)
f.write(str(path))
f.close()
如果您想从外部命令获取输出,请使用@Paul Rooney所指出的。您可以按如下方式更改程序,将pwd的输出打印到文件:
from subprocess import check_output
path_bytes = check_output('pwd', shell=True)
path_str = path_bytes.decode('utf-8')
with open('test.txt', 'w') as f:
f.write(path_str)
您在哪里读到的
subprocess.call()
捕获命令的输出?您看到的0
是call
的退出代码,意味着它成功完成了它的工作。正如Ignacio所说,call
不返回其输出流。除此之外,f.seek()
、f.close()
和将path
转换为str
是不必要的。请尝试call('pwd>test.txt')
而不使用带有..部分的。它返回命令的输出,而不是其状态代码。