【发布时间】:2016-11-23 20:09:07
【问题描述】:
我有以下 Python 代码,它有 1 个带有参数的命令行可选参数 (c) 和 2 个不带参数的选项(a 和 b):
import sys, getopt
def main(argv):
inputfile = ''
outputfile = ''
try:
opts, args = getopt.getopt(argv,"abc:",["csvfile="])
except getopt.GetoptError:
print 'Error in usage - a does not require an argument'
sys.exit(2)
for opt, arg in opts:
print "Raw input is: {}" .format(opt)
if opt in ("-c", "--csvfile"):
outputfile = arg
print 'Output file is {}' .format(outputfile)
elif opt == '-a':
print 'Alpha'
elif opt == '-b':
print 'Beta'
print 'User choice is {}' .format(opt.lstrip('-'))
if __name__ == "__main__":
main(sys.argv[1:])
当我输入python readwritestore.py -a 时,我得到:
Raw input is: -a
Alpha
User choice is a
如果命令行参数是-a,这就是我所希望的。但是,如果我输入python readwritestore.py -a csvfile_name,则会得到:
Raw input is: -a
Alpha
User choice is a
这不是我想要的。在此函数中,c 是唯一需要参数的选项。如果我输入带有参数的a,
代码应该给出我设置的错误消息
Error in usage - a does not require an argument
a 或 b 不会发生这种情况。它允许在不引发错误的情况下输入参数。
如果不需要参数的选项带有参数,那么我希望它引发错误。 python readwritestore.py -a text
和python readwritestore.py -b text 应该引发错误Error in usage - a does not require an argument。
有没有办法指定这个? getopt() 是正确的方法吗?
其他信息:
我只希望 python readwritestore.py -c text 处理该参数。对于其他 2 个选项,a 和 b,代码应该会引发错误。
【问题讨论】:
标签: python command-line arguments optional-parameters