x的返回值 = os.system(..)

34
当我在Python中以root身份键入os.system("whoami")时,它返回root,但是当我尝试将其赋值给变量x = os.system("whoami")时,它会将x的值设置为0。为什么? (:
2个回答

58

os.system() 返回(编码的)进程退出值。0 表示成功:

在 Unix 上,返回值是进程退出状态,其格式符合 wait() 指定的格式。注意,POSIX 并未指定 C 函数 system() 的返回值意义,因此 Python 函数的返回值取决于系统。

你看到的输出被写入到 stdout,即你的控制台或终端,并不会返回给 Python 调用者。

如果你想捕获 stdout,请使用 subprocess.check_output() 代替:

x = subprocess.check_output(['whoami'])

我尝试了几种使用子进程的方法,但总是得到 [Errno 9] Bad file descriptor 的错误信息...出了什么问题?-.-. - Fabio Magarelli
1
@FabioMagarelli 没有提供 [mcve] 的情况下,很难确定。这可能不是我可以在评论中帮助的内容,请考虑发布一个问题,如果您有一个好的可重现案例。 - Martijn Pieters

8

os.system('command') 返回一个16位数字,其中从左边(lsb)开始的前8位表示操作系统用于关闭命令的信号,接下来的8位表示命令的返回代码。

有关详细信息,请参阅我的答案:Python中os.system()的返回值是什么?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接