cod*_*ash 9 python os.system python-3.x
我有两个文件: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"))
Run Code Online (Sandbox Code Playgroud)
script2.py
import sys
def main():
x="Hello World"+str(sys.argv[1])
return x
if __name__ == "__main__":
x= main()
Run Code Online (Sandbox Code Playgroud)
如您所见,我能够将值输入script2,但不能返回script1.我怎样才能做到这一点?注意:要调用script2.py,就像它的命令行执行一样.这就是我使用操作系统的原因.
Łuk*_*ski 15
好的,如果我理解你,你想要:
我建议使用子进程模块.最简单的方法是使用check_output()函数.
使用参数运行命令并将其输出作为字节字符串返回.
样品溶液:
script1.py
import sys
import subprocess
s2_out = subprocess.check_output([sys.executable, "script2.py", "34"])
print s2_out
Run Code Online (Sandbox Code Playgroud)
script2.py:
import sys
def main(arg):
print("Hello World"+arg)
if __name__ == "__main__":
main(sys.argv[1])
Run Code Online (Sandbox Code Playgroud)
将值从一个python“脚本”返回到另一个python的推荐方法是将脚本作为Python模块导入并直接调用函数:
import another_module
value = another_module.get_value(34)
Run Code Online (Sandbox Code Playgroud)
在哪里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)
Run Code Online (Sandbox Code Playgroud)
您可以another_module从命令行将其作为脚本导入并运行。如果您不需要将其作为命令行脚本运行,则可以删除main()功能并进行if __name__ == "__main__"阻止。
另请参阅使用subprocess在带有python脚本的输入中调用python脚本。
| 归档时间: |
|
| 查看次数: |
33345 次 |
| 最近记录: |