将值从一个Python脚本返回到另一个Python脚本

问题描述 投票:0回答:3

我有两个文件:script1.py 和 script2.py。我需要从 script1.py 调用 script2.py 并将 script2.py 的值返回给 script1.py。但问题是 script1.py 实际上通过 os 运行 script2.py。

script1.py:

import os
print(os.system("script2.py 34"))

script2.py

import sys
def main():
    x="Hello World"+str(sys.argv[1])
    return x

if __name__ == "__main__":
    x= main()

如您所见,我能够将值获取到 script2,但无法返回到 script1。我怎样才能做到这一点?注意:必须像命令行执行一样调用 script2.py。这就是我使用操作系统的原因。

python python-3.x os.system
3个回答
20
投票

好的,如果我理解正确的话,你想要:

  • 将参数传递给另一个脚本
  • 将另一个脚本的输出检索到原始调用者

我建议使用子流程模块。最简单的方法是使用 check_output() 函数。

使用参数运行命令并将其输出作为字节字符串返回。

解决方案示例:

脚本1.py

import sys
import subprocess
s2_out = subprocess.check_output([sys.executable, "script2.py", "34"])
print s2_out

script2.py:

import sys
def main(arg):
    print("Hello World"+arg)

if __name__ == "__main__":
    main(sys.argv[1])

12
投票

将值从一个 Python“脚本”返回到另一个 Python“脚本”的推荐方法是将脚本作为 Python 模块导入并直接调用函数:

import another_module

value = another_module.get_value(34)

其中

another_module.py
是:

#!/usr/bin/env python
def get_value(*args):
    return "Hello World " + ":".join(map(str, args))

def main(argv):
    print(get_value(*argv[1:]))

if __name__ == "__main__":
    import sys
    main(sys.argv)

您可以导入

another_module
并将其作为脚本从命令行运行。如果您不需要将其作为命令行脚本运行,那么您可以删除
main()
函数和
if __name__ == "__main__"
块。

另请参阅,使用子进程在 python 脚本中调用带有输入的 python 脚本


0
投票

print(“世界你好!”) def getValue(): 返回“值” 打印(获取值()) 导入系统 打印(系统) 导入操作系统 打印(操作系统)

© www.soinside.com 2019 - 2024. All rights reserved.