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 中的多字符命令解析的主要内容,如果未能解决你的问题,请参考以下文章