我想在Python Shell中运行命令以执行带有参数的文件。
例如:execfile("abc.py")
但是如何添加2个参数?
Answers:
execfile
运行Python文件,但通过加载而不是脚本来运行。您只能传递变量绑定,不能传递参数。
如果要从Python内部运行程序,请使用subprocess.call
。例如
import subprocess
subprocess.call(['./abc.py', arg1, arg2])
subprocess.call("python abc.py 'arg1'", shell=True)
execfile
在当前进程中运行,因此(如果相关)使用当前命令行。从这个意义上说,没有“传递”参数就无法使用它!
尝试这个:
import sys
sys.argv = ['arg1', 'arg2']
execfile('abc.py')
请注意,abc.py
完成后,控制权将返回给调用程序。还要注意,如果确实完成,abc.py
可以调用quit()
。
abc.py
据我所知,没有任何东西可以传递,我也看不出为什么会传递。
argparse
解析输入参数时,此方法出现错误:参数太少。我python abc.py arg1 arg2
在终端中运行(此方法有效,没有错误),然后sys.argv
通过打印来打印的内容,发现其中sys.argv
包含名称'abc.py'
作为列表的第一个元素。事实上,user2757262的下面的代码使用sys.argv = ['abc.py','arg1', 'arg2']
是工作的一个!
argv[0]
是脚本名称”。
sys
一个过程中只有一个,它将找到您放置的内容。
execfile
已从Python3中删除。如何exec
与参数一起使用?
其实,我们不是要这样做吗?
import sys
sys.argv = ['abc.py','arg1', 'arg2']
execfile('abc.py')
python
指向的是其他(2-vs-3)版本的Python :)
abc.py
阅读以下内容,它也会失败from sys import argv
如果您PYTHONINSPECT
在python文件中设置要执行
[repl.py]
import os
import sys
from time import time
os.environ['PYTHONINSPECT'] = 'True'
t=time()
argv=sys.argv[1:len(sys.argv)]
无需使用execfile
,您可以像往常一样在shell中直接运行带有参数的文件:
python repl.py one two 3
>>> t
1513989378.880822
>>> argv
['one', 'two', '3']
这有效:
subprocess.call("python abc.py arg1 arg2", shell=True)