Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么子流程命令打印0而不是路径?_Python - Fatal编程技术网

Python 为什么子流程命令打印0而不是路径?

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() 如果您想从外部

我是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()

如果您想从外部命令获取输出,请使用@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')
而不使用带有..部分的
。它返回命令的输出,而不是其状态代码。