【问题标题】:What is the return value of subprocess.call()?subprocess.call() 的返回值是多少?
【发布时间】:2010-12-14 09:31:38
【问题描述】:

我不确定subprocess.call() 的返回值是什么意思。

  • 我可以安全地假设零值总是意味着命令执行成功吗?

  • 返回值是否等同于 shell 命令的退出状态?

例如,以下代码对 Linux 上的几乎所有命令都有效吗?

 cmd = "foo.txt > bar.txt"
 ret = subprocess.call(cmd, shell=True)
 if ret != 0:
     if ret < 0:
         print "Killed by signal", -ret
     else:
         print "Command failed with return code", ret
 else:
     print "SUCCESS!!"

请赐教:-)

【问题讨论】:

    标签: python linux


    【解决方案1】:

    是的,Subprocess.call 返回“实际进程返回码”。

    您可以查看Subprocess.callSubprocess.Popen.returncode的官方文档

    【讨论】:

    • 我收到了returncode=52。在任何地方都找不到这意味着什么。
    【解决方案2】:

    它是返回码,但请记住,返回码的含义取决于子流程的作者。有一种强烈的 0 意味着成功的文化,但没有什么可以强制执行。

    【讨论】:

      【解决方案3】:

      你受你调用的命令的支配。 考虑一下:

      test.py

      #!/usr/bin/env python
      success=False
      if not success:
          exit()
      

      然后运行您的代码(使用 cmd='test.py')将导致 成功!!

      只是因为test.py不符合不成功时返回非零值的约定。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-01-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-25
        • 2020-12-13
        相关资源
        最近更新 更多