Python getopt 中的多字符命令解析

Posted

技术标签:

【中文标题】Python getopt 中的多字符命令解析【英文标题】:Multi-Character Command Parsing in Python getopt 【发布时间】:2012-06-20 15:17:10 【问题描述】:

我一直在使用 python getopt 进行短和长解析,效果很好。现在我需要在 getopt 函数中添加一些更短的变量,如果我需要多个字符作为 getopt:short,它看起来会更好。有没有办法做这样的事情。

getopt.getopt(argv,"hf:c:d:pv:pz:","")

在这里,我需要将 pv 和 pz 作为单独的命令行参数访问,而不是 getopt 将其读取为“p with no args”、“v with one args”。我在引号内尝试了 'pv:' [pv:],但它识别了 pv,但不读取 args。

另外,(在不同的注释上)相同的参数是否可以有多个输入。请原谅我,如果你这是一个非常简单的答案。

【问题讨论】:

您可能希望将您的选项解析转换为 argparse,或者如果尚未在 Python 2.7 上转换为 optparse。 我在 2.4.3.... 实验室机器,不能做太多.... :( 然后使用optparse,仍然比getopt好得多。 ^是的,我会在主项目中添加它,我现在只是原型设计......任何简单的黑客都可以工作......谢谢 另请注意,短选项可以组合到一个开关中(想想-tzvf 而不是-t -z -v -f),因此参数解析器通常不支持包含多个字符的短选项。跨度> 【参考方案1】:

根据我对文档和研究的理解,当我需要和你一样的东西时,我没有办法做到这一点。 shortopts 带前缀“-”只能使用一个字符,超过一个字符必须使用longopts,它使用前缀“--”。

python3 中的示例:

import sys, getopt

try:
    opts, args = getopt.getopt(sys.argv[1:], 'c:d:', ['hf','pv','pz'])
except getopt.GetoptError as e:
    print(str(e))

for o, a in opts:
    print(o, ':', a)

不幸的是,我认为没有办法将longopts 与必需的参数放在一起,但这可以通过手动检查来解决。

有关更多信息,我建议查阅文档: https://docs.python.org/3.1/library/getopt.html

【讨论】:

以上是关于Python getopt 中的多字符命令解析的主要内容,如果未能解决你的问题,请参考以下文章

一文看懂命令行参数的用法——Python中的getopt神器

python 解析命令行

Python 命令行工具辅助getopt使用解析!

Python 命令行工具辅助getopt使用解析!

Python笔记:命令行参数解析

getopt-解析命令行参数