Python 从 python 脚本运行另一个脚本
Posted
技术标签:
【中文标题】Python 从 python 脚本运行另一个脚本【英文标题】:Python run another script from a python script 【发布时间】:2016-09-03 14:56:26 【问题描述】:def run_cmd(self, cmd):
print cmd
status = os.system(cmd)
print 'Command ran with Status: %s' % status
if status:
s = 'Command Failed: Status: %s for %s' % (status, cmd)
print s
sys.exit(status)
else:
s = 'Command Success: %s' % cmd
return status
我正在使用此函数从另一个脚本运行 python 脚本。
例如:
command_to_exec = 'python script_b.py'
run_cmd(command_to_exec)
现在,如果 script_b.py 失败,则 script_a.py 会以状态退出。
没关系。
案例 2:
command_to_exec = 'python script_a.py --options'
rum_cmd(command_to_exec)
这个案例是 script_a.py 从自身运行'python script_a.py'。 在这种情况下,如果新生成的 script_a.py 失败,外部 script_a.py 仍然是成功的,因为它无法捕捉到内部 script_a.py 的失败(因为 sys.exit(status))
现在,我该如何处理这种情况? (如果内部 script_a 失败,外部 script_a 应该退出)
【问题讨论】:
你为什么要这样调用整个脚本?为什么不导入“内部”脚本或您需要的部分并运行它们?比如为什么不在“内部”脚本中调用函数? 使用可以使用子进程docs.python.org/2/library/subprocess.html#replacing-os-system 您可以测试sys.argv[0]
以防止自己跑,这可能会导致可怕的分叉炸弹(不断产卵过程)。
【参考方案1】:
您可以将其他脚本作为模块运行。假设您有以下文件夹:
目录
|---main.py
|---imported.py
你想从第一个开始运行第二个。只需使用import
,就像这样:
import imported #the file name without the extension
它将运行该文件,您将能够在主脚本中使用它的变量和函数。
【讨论】:
在我的情况下这是不可能的,因为我有不同的选项可以给生成的脚本。以上是关于Python 从 python 脚本运行另一个脚本的主要内容,如果未能解决你的问题,请参考以下文章
停止在另一个 Python 脚本中运行的一个 Python 脚本
当另一个 python 脚本正在运行时,如何停止我的 python 脚本?
使用python调用设置环境变量的批处理脚本并运行另一个使用它们的程序