如何在python程序中执行python程序?

时间:2017-03-25 02:44:10

标签: python python-3.x if-statement

现在考虑以下想法 我声明if/elif类型来运行程序 如:

number=int(input("Enter a number :"))

If number ==0
Run program.py

Elif number ==1
Run Program2.py

Else number ==2
Run Program3.py

现在很明显,命令运行program.py不起作用,所以我应该怎么做才能让它执行program.py,如果它被选中并关闭我们选择号码的主程序?< / p>

2 个答案:

答案 0 :(得分:1)

有几种方法可以运行外部代码。有subprocessos.system()来运行光盘上的任何其他程序,然后exec运行您拥有的代码作为字符串或代码对象,然后有eval这有点类似于exec但只接受一个字符串并允许提供全局变量和本地变量。这些都是内置的。

但您可能并不真的想将外部脚本作为脚本运行。它通过正确地将sys.argv传递给它们并确保它们获得正确的stdin / stdout和所有内容来创建各种问题。十分之九,你最好创建一系列函数(可能在其他文件中),导入它们并调用它们。

答案 1 :(得分:0)

您应该考虑了解子流程:https://docs.python.org/3/library/subprocess.html

对于像这样的东西,Popen选项是最有用的选项之一。

number=int(input("Enter a number :"))
If number == 0:
  subprocess.Popen([sys.argv[0], param]) 
Elif number ==1:
  subprocess.Popen([program2.py, param]) 
Else number ==2:
  subprocess.Popen([program3.py, param]) 

注意:数字0将打开用于调用新进程的文件,以防您需要克隆&#34;你自己的计划。

编辑:Linux和Windows将要求您以不同方式执行此操作,如:

if platform.system() == "Linux":
  subprocess.Popen([sys.argv[0], param])
else:
  subprocess.Popen(["python", sys.argv[0], param])