【问题标题】:Return value of x = os.system(..) [duplicate]x = os.system(..) 的返回值 [重复]
【发布时间】:2014-11-18 06:41:21
【问题描述】:

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

【问题讨论】:

    标签: python linux os.system


    【解决方案1】:

    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 ...怎么了? .-.
    • @FabioMagarelli 没有minimal reproducible example,这很难说。这可能不是我可以在 cmets 中提供帮助的事情,如果您确实有一个很好的可重现案例,请考虑发布一个问题。
    【解决方案2】:

    os.system('command') 返回一个 16 位的数字,左起 8 位(lsb)表示 os 用于关闭命令的信号,后 8 位表示命令的返回码。

    更多详情请参考我的回答What is the return value of os.system() in Python?

    【讨论】:

      猜你喜欢
      • 2016-10-18
      • 2019-07-29
      • 2011-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-28
      • 1970-01-01
      相关资源
      最近更新 更多