【问题标题】:Get a return value using subprocess [duplicate]使用子进程获取返回值[重复]
【发布时间】:2012-02-20 21:43:47
【问题描述】:

我希望能够通过脚本的返回值来定义变量。这是我目前拥有的:

sum_total_earnings_usd = subprocess.call([SCRIPT, "-d", date])

我检查了 SCRIPT 的返回值,但是,当我尝试设置此变量时,它总是返回 0 (http://docs.python.org/library/subprocess.html#subprocess.call)。我将如何运行此脚本并捕获返回值以存储为变量?

【问题讨论】:

    标签: python subprocess


    【解决方案1】:

    【讨论】:

    • 谢谢。 subprocess.check_output() 是运行命令并返回返回值的那个。
    • 如果您希望输出将您的值写入 STDOUT 并使用 check_output() 获取该值。否则,jcollado 是正确的,进程退出状态已经返回。
    • 请注意,return value 与程序的输出不同,而这正是您想要得到的。返回值为零,因为按照惯例,零表示脚本成功运行并且没有错误。程序的输出是它打印到 stdout(或者可能是 stderr)的内容,并且通过重定向来获得这个值,就像使用标准的 unix 管道一样。
    【解决方案2】:

    subprocess.call 已经返回进程返回值。如果您总是收到 0,那么您需要查看 SCRIPT 以确保它返回您期望的值。

    要仔细检查,您还可以在 shell 中执行 SCRIPT 并使用 $? 获取返回码。

    【讨论】:

      【解决方案3】:

      如果您的 脚本 正在返回值,那么您会想要使用 subprocess.check_output():

      subprocess.check_output([SCRIPT, "-d", date], shell=True).
      

      subprocess.check_call()从脚本中获取最终返回值,0一般表示“脚本成功完成”。

      【讨论】:

        猜你喜欢
        • 2019-08-04
        • 1970-01-01
        • 2018-09-09
        • 2023-03-18
        • 1970-01-01
        • 2018-12-01
        • 2020-06-13
        • 2018-08-07
        • 2010-12-07
        相关资源
        最近更新 更多