Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从一个python脚本向另一个脚本返回值_Python_Python 3.x_Os.system - Fatal编程技术网

从一个python脚本向另一个脚本返回值

从一个python脚本向另一个脚本返回值,python,python-3.x,os.system,Python,Python 3.x,Os.system,我有两个文件:script1.py和script2.py。我需要从script1.py调用script2.py,并将值从script2.py返回到script1.py。但关键是script1.py实际上通过操作系统运行script2.py 脚本1.py: import os print(os.system("script2.py 34")) 脚本2.py import sys def main(): x="Hello World"+str(sys.argv[1]) return

我有两个文件:script1.py和script2.py。我需要从script1.py调用script2.py,并将值从script2.py返回到script1.py。但关键是script1.py实际上通过操作系统运行script2.py

脚本1.py:

import os
print(os.system("script2.py 34"))
脚本2.py

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

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

正如您所看到的,我能够将值输入到script2,但不能返回到script1。我该怎么做?注意:必须调用script2.py,就好像它是命令行执行一样。这就是我使用操作系统的原因。

好的,如果我理解正确,您希望:

  • 将参数传递给另一个脚本
  • 从另一个脚本检索到原始调用方的输出
我建议使用子流程模块。最简单的方法是使用函数

使用参数运行命令,并以字节字符串形式返回其输出

样品溶液:

脚本1.py

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

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

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

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

import another_module

value = another_module.get_value(34)
其中
另一个_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)
您可以导入另一个模块,并从命令行将其作为脚本运行。如果不需要将其作为命令行脚本运行,则可以删除
main()
函数和
If\uuuuu name\uuuu==“\uuuuu main\uuuu”


另请参见,.

script2.py
返回什么?返回代码是否足够?我希望返回值x。在这种情况下,script2应该返回“Hello World 34”谢谢!但我得到了一个TypeError:类型为“int”的参数不是iterable错误。是因为python版本吗?我用的是3。4@user567抱歉,您必须将34作为字符串传递。我将编辑答案。@Łukasz Rogalski,我如何验证script2.py中的s2_out if print(1)?