【问题标题】:How to return a value from one script to another in Python?如何在 Python 中将值从一个脚本返回到另一个脚本?
【发布时间】:2018-09-25 03:00:41
【问题描述】:

脚本2

def timer():
    time.sleep(10)
    return True

retvalue = timer()

================================================ =========================== 脚本 1

retvalue = subprocess.call(['python', 'Script2.py'])
print(retvalue)

我也尝试过返回一个整数,但脚本 1 中的 retvalue 仍然为 0

【问题讨论】:

  • 你基本上不会。您可以序列化一个对象并通过管道传输它。将其打印到标准输出并在另一侧读取是这样做的一种形式。
  • 返回一个始终为 True 的值有什么意义?为什么你使用 subprocess 来运行该函数而不是导入它并正常调用它?
  • 我正在尝试运行第二个脚本以及我可以执行的第一个脚本,并在它完成时返回一个值,这样第一个脚本就不会在等待代码时“挂起”结束。然后我会尝试使用线程来检查值并保持主程序运行。我在使用主程序中的函数的线程时遇到问题,因为它们是由事件触发的,所以我试图找到一种解决方法。
  • 在这种情况下,您应该发布一个更实际的示例,最好是minimal reproducible example,以便我们可以帮助您使线程正常工作。但无论如何,在 Script2 中,您可以执行 sys.exit(retval) 以返回数字退出代码。但这是一种非常笨拙的处理方式。
  • 感谢您的指导,我将在下一篇文章中这样做。

标签: python python-3.x subprocess return-value


【解决方案1】:

retvalue 正在接收来自subprocess.call() 的退出代码。值“0”表示您生成的命令成功完成。

在您的示例中,Script2 中没有任何内容返回到 Script1

Script2 应该被导入,然后它的函数才能被调用。

Script1.py

import Script2
retvalue = Script2.timer()

注意:您应该在 Script2 中添加样板代码,以便在导入时不执行 Script2.py

【讨论】:

  • 我不知道它正在获取退出代码,但这是有道理的。谢谢cortruu
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-04
相关资源
最近更新 更多