如何使用 optparse 直接调用 python 主函数?

问题描述 投票:0回答:2

伙计们,我继承了一个 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 以指定方式完成传递参数的最简单方法是什么?

python argparse optparse
2个回答
0
投票

来自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()

0
投票

您的解析器需要一个

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'...])
© www.soinside.com 2019 - 2024. All rights reserved.