为什么在我触发终端命令时python返回0?

时间:2015-10-29 17:29:52

标签: python terminal

我正在尝试让python与我的终端进行交互,我尝试了以下脚本,当我希望它显示当前目录的内容时,它返回0:

>>> import os
>>> os.system("ls")
0

为什么这样做? (注意这是一个mac命令,因为我在Mac上)

4 个答案:

答案 0 :(得分:4)

0ls成功完成后的退出状态。

如果要捕获文件名列表,则需要其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()

指定的格式编码的进程的退出状态

在这种情况下,0ls命令的返回值,这意味着命令成功。 system功能无法捕获stdoutstderr

如果您想捕获它们,请使用subprocess模块。

答案 3 :(得分:0)

这是ls退出代码。

如果执行无效命令,响应可能与零不同。

>>> os.system("ls -wk")
ls: invalid line width: k
512