Run one python script from another python script?
本问题已经有最佳答案,请猛点这里访问。
我已经试过了
1 | if __name__ =="__main__": |
到
1 | os.system() |
我已经阅读了这里所有其他类似的问题,并阅读了官方的python文档。
我拿不到这个
1 2 3 4 5 6 7 8 9 10 11 | import os ask1 = raw_input("Create bid?") create ="createbid.py %s" % () def questions(): if ask1 =="yes": os.system(create) if ask1 =="no": quit() question() |
可靠地运行ceatebid.py文件。我要和它一起工作
1 | if __name__ =="__main__": |
但是如果我还想调用另一个脚本呢?
我想根据问题的回答方式调用不同的脚本。
我不确定你到底想做什么,但总的来说,你应该能够做这样的事情。
1 2 3 4 5 6 7 8 | import foo import bar ask = raw_input("Do something?") if ask.lower() in ('yes', 'y'): foo.do_something() else: bar.do_other() |
现在,启动其他进程的推荐方法是使用
做起来相对容易。下面是一个简单的方法来应用于您的问题:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | import subprocess import sys create = [sys.executable, 'createbid.py'] def question(ans): if ans == 'yes': subprocess.call(create) elif ans == 'no': quit() ask1 = raw_input('Create bid? ') question(ask1) print('done') |
注意:当以这种方式执行
这里可能回答了这个问题:从另一个python脚本调用python脚本的最佳方法是什么?
因此,您需要在createbid.py(和其他脚本)中定义一些方法:
1 2 | def run() print 'running' |
然后在主脚本中,
1 2 3 4 5 6 7 8 9 10 | import createbid def questions(): if ask1 =="yes": createbid.run() if ask1 =="no": quit() if __name__ == '__main__': questions() |
使用
如果您想与该脚本通信,您可能需要
谢谢你的帮助!我把几个答案结合起来使它起作用。
这工作:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | import seebid import createbid ask1 = raw_input("Create bid?") ask2 = raw_input("View bid?") create = createbid see = seebid def questions(): if ask1.lower() in ('yes', 'y'): create.createbd() elif ask1.lower() in ('no', 'n'): ask2 if ask2.lower() in ('yes', 'y'): see.seebd() if __name__ =="__main__": questions() |
或者,可以使用
假设脚本
1 2 | scriptContent = open("scriptA.py", 'r').read() exec(scriptContent) |
这样做的好处是,
因此,如果要在运行脚本之前定义一些参数,您仍然可以在解决方案中调用它们:
1 2 3 4 5 6 7 8 | #Main script param1 = 12 param2 = 23 scriptContent = open("scriptA.py", 'r').read() exec(scriptContent) #scriptA.py print(param1 + param2) |
不过,这种方法更像是一种有趣的技巧,根据具体情况,应该有几种更好的方法。