我使用GETOPTS来解析一个参数。
**
def main(argv):
print 'main = ', argv
outputfile = ''
try:
opts, args = getopt.getopt(argv,"hw:",["weblink="])
print 'parsed correctly'
except getopt.GetoptError:
print 'parse_link.py -i <inputfile> -o <outputfile>'
sys.exit(2)
for opt, arg in opts:
if opt == '-h':
print 'parse_link.py -w <SA or YAL> '
sys.exit()
elif opt in ("-w", "--weblink"):
weblink = arg
print 'weblink is "', weblink
if __name__ == "__main__":
main(sys.argv[1:])
**
当我运行python test.py时 - 我期望GetoptError,因为我没有给出任何参数,但它成功解析了空格
答案 0 :(得分:2)
如果您在示例中输入了错误的选项,则实际上是GetoptError。使用您自己修改的代码:
import sys, getopt
def main():
print 'main = '
outputfile = ''
try:
opts, args = getopt.getopt(sys.argv[1:],"hw:",["weblink="])
print 'parsed correctly'
except getopt.GetoptError:
print 'parse_link.py -i <inputfile> -o <outputfile>'
sys.exit(2)
for opt, arg in opts:
if opt == '-h':
print 'parse_link.py -w <SA or YAL> '
sys.exit()
elif opt in ("-w", "--weblink"):
print arg
print 'weblink is '
if __name__ == "__main__":
main()
我运行这个python test.py -T输出将是:
main =
parse_link.py -i <inputfile> -o <outputfile>
您还可以通过将GetoptError打印为str来查看错误,如下所示:
except getopt.GetoptError as err:
print str(err)
输出:
main =
option -t not recognized
parse_link.py -i <inputfile> -o <outputfile>
您希望在下面的代码中包含此内容,以便打印您的用法:
if len(sys.argv) <= 1:
print 'parse_link.py -i <inputfile> -o <outputfile>'
sys.exit(2)
以下更新的代码。
def main(argv):
print 'main = ', argv
outputfile = ''
#Add usage as a string
usage = 'parse_link.py -i <inputfile> -o <outputfile>'
try:
opts, args = getopt.getopt(argv,"hw:",["weblink="])
print 'parsed correctly'
except getopt.GetoptError:
print usage
sys.exit(2)
if len(sys.argv) <= 1:
print usage
sys.exit(2)
for opt, arg in opts:
if opt == '-h':
print 'parse_link.py -w <SA or YAL> '
sys.exit()
elif opt in ("-w", "--weblink"):
weblink = arg
print 'weblink is "', weblink
if __name__ == "__main__":
main(sys.argv[1:])