我有一个python脚本,我想传递命令行参数。我从Windows Python Naming Issue和Python Command Line Arguments Tutorial获得了一些指导。我没有在执行脚本时弹出的任何错误,但是当没有给出命令行参数时我没有得到预期的错误消息,在给出-h命令行时也没有得到print命令。我已经向-i和-s命令行参数添加了打印命令,并且无法成功通过任何命令行参数(尽管没有错误)我不知道为什么这不起作用因为我不熟悉Python。如果有人能指出这个问题,我将不胜感激。
import re
import os
import sys
import getopt
def main(argv):
ipaddress = ''
scac = ''
try:
opts, args = getopt.getopt(argv,"hi:s:",["ipaddress=","scac="])
except getopt.GetoptError:
print 'test.py -i <ipaddress> -s <scac>'
sys.exit(2)
for opt, arg in opts:
if opt == '-h':
print 'FedConnectStatus.py -i <iobipaddress> -s <scac>'
sys.exit()
elif opt in ("-i", "--ipaddress"):
ipaddress = arg
elif opt in ("-s", "--scac"):
scac = arg
答案 0 :(得分:0)
sys.exit
而不是它
如果阻止,应该在里面如果你没有传递任何选项,那么opts将清空列表然后你可以手动检查并执行操作
def main(argv):
#print argv
ipaddress = ''
scac = ''
try:
opts, args = getopt.getopt(argv,"hi:s:",["ipaddress=","scac="])
if not opts: # if no option given
print 'usage test.py -i <ipaddress> -s <scac>'
sys.exit(2)
except getopt.GetoptError:
print 'test.py -i <ipaddress> -s <scac>'
sys.exit(2)
for opt, arg in opts:
if opt == '-h':
print 'FedConnectStatus.py -i <iobipaddress> -s <scac>'
sys.exit() # it should be on level of if
elif opt in ("-i", "--ipaddress"):
ipaddress = arg
elif opt in ("-s", "--scac"):
scac = arg
if __name__ == "__main__":
main(sys.argv[1:])
# $ python cmderr.py -h
# FedConnectStatus.py -i <iobipaddress> -s <scac>