伙计们,我继承了一个 python 脚本,主要使用 optParse 构建一个项目菜单供用户选择:
def main():
parser = optParse(prog='script')
#parser.add_option("-e","--repeat",dest="repeat",type=int,default=3,help="Total number of times to do the checking.")
parser.add_option("-H","--time",dest="time", type='float', default=1.0,help="Time in hours to run the test.")
需要做的是从 running python 会话中调用此主要函数,但不太清楚如何指定参数。类似这样的东西:
import script
script.main(['-e', '5', '-H', '2'])
然而,main函数没有输入参数。修改 main 以指定方式完成传递参数的最简单方法是什么?
来自Tim Roberts的回答,以下作品:
def main():
parser = optParse(prog='script')
#parser.add_option("-e","--repeat",dest="repeat",type=int,default=3,help="Total number of times to do the checking.")
parser.add_option("-H","--time",dest="time", type='float', default=1.0,help="Time in hours to run the test.")
sys.argv = ['scripyt.py', '-e', '5', '-H', '2']
然后只需从正在运行的 python 会话中调用以下内容:
script.main()
您的解析器需要一个
parse_args
调用,从文档中看起来像:
(options, args) = parser.parse_args(args=None, values=None)
args
可以是字符串列表。如果是None
,它将使用sys.argv[1:]
.
有时主要定义为
def main(argv=None):
parser = ...
...
options, args = parser.parse_args(argv)
然后主来电者可以使用
main() # or
main(['-e','5'...])