1

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

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)

我将运行此代码我将得到此输出 ./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']
4

1 回答 1

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

或者

./code.py -d package1 -f package2

甚至混合

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

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

于 2013-04-30T07:43:41.750 回答