我使用getops进行args管理,出于某种原因我的-s变量无效。我的代码如下,以及我得到的输出
try:
opts, args = getopt.getopt(sys.argv[1:], "hadsp:v", ["help", "all", "display", "single=", "present="])#, "search="])
except getopt.GetoptError as err:
print(err)
print "Exiting now, no options entered"
help()
sys.exit(2)
if len(opts) == 0:
print "No options passed"
help()
print opts
print args
for o, a in opts:
if o in ("-h", "--help"):
help()
elif o in ("-p", "--present"):
search(a)
elif o in ("-a", "--all"):
all_install()
elif o in ("-s", "--single"):
if a == '':
print "crap"
sys.exit(2)
single_install(a)
elif o in ("-d", "--display"):
display()
else:
print "Exiting now, unknown option"
help()
sys.exit(2)
输出
[('-s', '')]
['test']
crap
当我运行程序时:
python file.py -s test
不知道为什么会发生这种情况,感谢您的帮助
答案 0 :(得分:1)
import argparse
argParser = argparse.ArgumentParser()
argParser.add_argument(
'-p', '--present', dest='present', help='write help here for this parameter')
args = argParser.parse_args()
if args.present:
search(a)
使用argparse的示例代码,更易于管理和使用 -h(或)--help是argparse
的内置选项如果您想使用getopt,请参阅解析选项的文档
https://docs.python.org/2/library/getopt.html
>>> import getopt
>>> args = '-a -b -cfoo -d bar a1 a2'.split()
>>> args
['-a', '-b', '-cfoo', '-d', 'bar', 'a1', 'a2']
>>> optlist, args = getopt.getopt(args, 'abc:d:')
>>> optlist
[('-a', ''), ('-b', ''), ('-c', 'foo'), ('-d', 'bar')]
>>> args
['a1', 'a2']