【发布时间】:2014-11-18 06:41:21
【问题描述】:
当我在 Python 中以 root 身份键入 os.system("whoami") 时,它返回 root,但是当我尝试将其分配给变量 x = os.system("whoami") 时,它会将 x 的值设置为 0。为什么? (:
【问题讨论】:
当我在 Python 中以 root 身份键入 os.system("whoami") 时,它返回 root,但是当我尝试将其分配给变量 x = os.system("whoami") 时,它会将 x 的值设置为 0。为什么? (:
【问题讨论】:
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 ...怎么了? .-.
os.system('command') 返回一个 16 位的数字,左起 8 位(lsb)表示 os 用于关闭命令的信号,后 8 位表示命令的返回码。
更多详情请参考我的回答What is the return value of os.system() in Python?
【讨论】: