我正在尝试让python与我的终端进行交互,我尝试了以下脚本,当我希望它显示当前目录的内容时,它返回0:
>>> import os
>>> os.system("ls")
0
为什么这样做? (注意这是一个mac命令,因为我在Mac上)
答案 0 :(得分:4)
0
是ls
成功完成后的退出状态。
如果要捕获文件名列表,则需要其stdout,而不是其退出状态。 os.system()
不会返回该内容。
我建议:
import subprocess
output = subprocess.check_output(["ls"]) # will raise an exception if ls fails
答案 1 :(得分:0)
它返回0,因为这是命令的退出代码(意味着它干净地退出)。
如果您想要命令的结果,我建议使用子进程模块(https://docs.python.org/2/library/subprocess.html#module-subprocess)。
答案 2 :(得分:0)
那就是os.system
函数的工作方式(来自python doc):
在Unix上,返回值是以wait()
指定的格式编码的进程的退出状态
在这种情况下,0
是ls
命令的返回值,这意味着命令成功。 system
功能无法捕获stdout
或stderr
。
如果您想捕获它们,请使用subprocess
模块。
答案 3 :(得分:0)
这是ls
退出代码。
如果执行无效命令,响应可能与零不同。
>>> os.system("ls -wk")
ls: invalid line width: k
512