从shell运行Python程序并保持变量在作用域内
Python里面有一个很不错的功能叫做execfile
,它可以让你在解释器里运行一个程序,并且可以保留所有的变量,这样你就可以随时查看这些变量的值。不过,按照我所知道的,你不能用execfile
来运行一个需要从命令行传入参数的程序;如果你试图把参数加上,Python会报错,提示找不到那个带有空格和参数的文件。
有没有办法可以运行一个需要命令行参数的Python脚本,并且在程序执行完后还能保留所有的变量呢?就像一个可以带参数的execfile
一样?
谢谢,
Kevin
1 个回答
3
你可以直接修改 sys.argv
。这个文件:
# foo.py
import sys
print sys.argv
另一个文件:
import sys
import shlex # thanks Matt
old_argv = sys.argv
sys.argv = shlex.split('foo.py is a happy camper')
execfile('foo.py')
输出结果:
$ python foo.py is a happy camper
['foo.py', 'is', 'a', 'happy', 'camper']
$ python bar.py
['foo.py', 'is', 'a', 'happy', 'camper']
不过我得说,引用一下Ignacio Vazquez-Abrams的话:
这听起来真是乱七八糟。
不过我猜你有你的理由。