Skip to main content
 首页 » 编程设计

python : use optparse on given list rather than on system command line arguments

2025年05月04日16cmt

在 python 应用程序的框架内,我需要调用主要使用 optparse 的几个脚本。他们都有一个这种形式的入口点:

if __name__ == '__main__': 
    mains(sys.argv) 

我刚刚调用了我的主函数 mains 以为我的问题最初来自那里。然后,mains 总是这样开始,例如:

def mains( argv ): 
    parser = OptionParser() 
    parser.add_option("-f", "--file", dest="filename", help="write result to FILE", metavar="FILE") 
    parser.add_option("-x", "--filter", dest="filterset", help="filters", metavar="FILTERS") 
    parser.add_option("-n", "--nameonly", dest="nameonly", help="nameonly", metavar="NAME_ONLY") 
    parser.add_option("-z", "--ignorezeros", dest="ignorezeros", help="ignorezeros", metavar="IGNORE_ZEROS") 
    parser.add_option("-y", "--xfilter", dest="xfilter", help="xfilter", metavar="X_FILTERS") 

optparser 没有使用这里的 argv,我找不到如何将它传递给它。根据我实际的主要脚本,我认为我可以通过将参数作为列表传递来调用这些 mains。很明显,在当前状态下,子脚本将始终选择命令行...如何自己传递参数?

更新:我的脚本试图对子脚本进行这些调用是从控制台以这种方式调用的:

start.py -df 

问题:第一个下标的 optparse 告诉我“d”不是有效选项,这表明它目前正在选择控制台参数。

请您参考如下方法:

您遗漏了解析选项的调用:

parser.parse_args(argv) 

parse_args 采用一个可选参数,它将用于解析而不是 sys.argv。