解析python脚本中的命令行参数(getopt woes)

任何人都可以发现为什么以下脚本不打印传递的参数?

import sys, getopt

def usage():
    print 'Unknown arguments'

def main(argv):
    try:
        opts, args = getopt.getopt(argv,'fdmse:d',['files=','data-source=','mode=','start','end'])

    except getopt.GetoptError:
        usage()
        sys.exit(999)

    for opt, arg in opts:
        # print opt,arg 
        if opt in('-f','--files'):
            print 'files: ', arg  #

if __name__ == "__main__":
    main(sys.argv[1:])

当我在命令行运行脚本并传递参数-f = dummy.csv时,似乎调用了usage() – 为什么?

顺便说一句,我发现程序流程的逻辑有点怪异(我从here复制了它).通常,我会认为逻辑将在try分支中实现,然后是异常处理程序的AFTER.

这是(在上面的代码中粘贴)编写try / catch块的’Pythonic’方法吗?

解决方法:

Normally, I would have thought that the logic will be implemented in the try branch

“一般”?通常意味着什么?

该计划应该做什么?什么例外有意义?该程序为响应异常做了什么.

没有“正常”.不仅仅是正常的赋值语句或普通的函数定义.

您的程序可以实现所需的最终状态.没有“正常”.

上一篇:linux – getopt_long vs getopt_long_only


下一篇:Python getopt 模块