【问题标题】:Python getopt behaviorPython getopt 行为
【发布时间】:2017-05-14 23:24:05
【问题描述】:
#!/usr/bin/python
import sys
import getopt

o, a = getopt.getopt(sys.argv[1:], 'ab:c:')

print "options: %s" % (o)
print "arguments: %s" % (a)

运行python:

python TestOpt.py a b 10 c 20

打印出来是这样的:

options: []
arguments: ['a', 'b', '10', 'c', '20']

我不明白为什么选项是一个空列表,而参数看起来像选项?

【问题讨论】:

  • "不熟悉 C getopt() 函数或希望编写更少代码并获得更好帮助和错误消息的用户应考虑改用 argparse 模块。"
  • 您熟悉 Unix 命令行约定吗?选项以连字符开头。
  • 使用连字符,我现在可以看到选项,但参数变成了一个空列表。这是它应该做的吗?options: [('-a', ''), ('-b', '10'), ('-c', '20')] arguments: []

标签: python getopt


【解决方案1】:

试试看:

python TestOpt.py -a -b 10 -c 20 foobar

【讨论】:

  • 用连字符我得到这个:options: [('-a', ''), ('-b', '10'), ('-c', '20')] arguments: [] 现在参数是空的。你知道为什么吗?
  • 你应该得到:options: [('-a', ''), ('-b', '10'), ('-c', '20')] arguments: ['foobar']
  • 您运行的是哪个版本的 Python 2.x?
  • 好的,我知道了。你介意告诉我为什么 foobar 在争论中吗?我期待['', '10', '20', 'foobar']
  • 我正在运行 python 2.7.12
猜你喜欢
  • 1970-01-01
  • 2010-12-15
  • 1970-01-01
  • 1970-01-01
  • 2014-05-25
  • 1970-01-01
  • 2019-07-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多