在Python shell中使用参数执行一个文件

我想在Python Shell中运行一个命令来执行一个带有参数的文件。

例如: execfile("abc.py")但如何添加2个参数?

execfile运行一个Python文件,但加载它,而不是一个脚本。 你只能通过variables绑定,而不是参数。

如果你想从Python中运行一个程序,使用subprocess.call 。 例如

 subprocess.call(['./abc.py', arg1, arg2]) 

尝试这个:

 import sys sys.argv = ['arg1', 'arg2'] execfile('abc.py') 

请注意,当abc.py完成时,控制权将被返回给调用程序。 还要注意,如果确实完成了, abc.py可以调用quit()

其实,我们不想这样做吗?

 import sys sys.argv = ['abc.py','arg1', 'arg2'] execfile('abc.py') 
 import sys import subprocess subprocess.call([sys.executable, 'abc.py', 'argument1', 'argument2']) 

你很难把模块加载到当前的解释器进程中,并从外部调用一个Python脚本。

前者可以通过import你感兴趣的文件来完成。execfile与导入类似,但是它只是简单的评估文件,而不是创build一个模块。 类似于shell脚本中的“sourcing”。

后者可以使用subprocess模块完成。 你从另一个解释器实例中产生并传递你想要的任何参数。 这与使用反引号在shell脚本中进行炮击类似。

你不能用execfile()传递命令行参数。 看看subprocess

对于更有趣的场景,你也可以看看runpy模块。 由于Python 2.7,它有run_path函数。 例如:

 import runpy import sys # argv[0] will be replaced by runpy # You could also skip this if you get sys.argv populated # via other means sys.argv = ['', 'arg1' 'arg2'] runpy.run_path('./abc.py', run_name='__main__') 

除了subprocess.call ,你也可以使用subprocess.Popen 。 如下所示

subprocess.Popen(['./script', arg1, arg2])