从shell运行Python程序并保持变量在作用域内

0 投票
1 回答
1826 浏览
提问于 2025-04-16 21:34

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的话:

这听起来真是乱七八糟。

不过我猜你有你的理由。

撰写回答