Python枚举删除列表的最后一个元素

我正在处理这篇文章
here尝试解析一些命令行参数,但我构建的脚本不断删除最后一个参数.

为了保持简单,我重现了这样的问题:

import getopt

argv = ["-c", "config", "-o", "hello", "-e", "fu bar", "-q", "this is a query"]
opts, args = getopt.getopt(argv, "c:o:e:q", ["cfile=", "ofile=", "entry=", "query="])

for opt, arg in opts:
    print(opt, arg)

这是我得到的输出:

-c config
-o hello
-e fu bar
-q

我哪里错了?

最佳答案 冒号(:)不是分隔符,它需要遵循
in the docs所述的每个参数:

shortopts is the string of option letters that the script wants to recognize, with options that require an argument followed by a colon (':'; i.e., the same format that Unix getopt() uses).

因此,您应该将“c:o:e:q”更改为“c:o:e:q:”

您链接的教程也以相同的方式使用它.

点赞