在程序中getopt 3个不同的arg句柄

时间:2013-04-30 07:25:15

标签: python getopt

我的项目处理三个参数如何像我这样处理我的代码

def main(argv):
try:
    opts, args = getopt.getopt(argv,"d:f:w:",['--i','--u','--v'])
    print opts
    print args

except getopt.GetoptError:
    print 'Option Error'

if __name__ == '__main__':
    try:
        main(sys.argv[1:])
    except Exception, e:
        print str(e)

我将运行此代码我将获得此ouptut ./code.py -d --i -f --u package1 package2 输出

[('-d', '--i'), ('-f', '--u')]
['package1', 'package2']

但我希望像这种格式的输出如何修改, ./ code.py -d --i package1 -f --u package2 ...

[('-d', '--i',), ('-f', '--u')]
['package1', 'package2']

1 个答案:

答案 0 :(得分:2)

我认为您误解了getopt的工作原理。 参数是getopt是getopt.getopt(args, options[, long_options])。 这意味着在你的情况下

-d equals --i
-f equals --u
-w equals --v

对于长期选择,一个好的做法是给他们长名。例如。:     -d应该等于--destination。

有关详细信息,请参阅http://docs.python.org/2/library/getopt.html#getopt.getopt

因此,您的案例中正确的CLI命令应该是

./code.py -d package1 -f package2

OR

./code.py -d package1 -f package2

或者甚至混合

./code.py --i package1 -f package2

其中第一个参数的 opt 为'd',第一个参数的 arg 为'package1'。