谁能发现为什么下面的脚本没有打印传递的参数?

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 分支中实现,然后在异常处理程序之后。

这是(如上面代码中粘贴的那样)编写 try/catch 块的“Pythonic”方式吗?

最佳答案



“一般”?通常是什么意思?

程序应该做什么?什么异常有意义?程序如何响应异常。

没有“通常”。比普通的赋值语句或普通的函数定义更多。

您的程序会做有意义的事情来实现所需的最终状态。没有“通常”。

关于python - 在 python 脚本中解析命令行参数(getopt woes),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3934799/

10-12 23:20