我正在尝试在python中编写一段代码,以使用getopt模块获取命令行选项和参数。 这是我的代码:
import getopt
import sys
def usage ():
print('Usage')
def main():
try:
opts, args = getopt.getopt(sys.argv[1:], 'xy:')
except getopt.GetoptError as err:
print(err)
usage()
sys.exit()
for o,a in opts:
if o in ("-x", "--xxx"):
print(a)
elif o in ("-y", "--yyy"):
print(a)
else:
usage()
sys.exit()
if __name__ == "__main__":
main()
问题在于我无法读取选项x
的参数,但我可以阅读y
的参数。我该怎么做才能解决这个问题?
答案 0 :(得分:11)
尝试getopt.getopt(sys.argv[1:], 'x:y:')
http://docs.python.org/library/getopt.html
解析命令行选项和 参数列表。 args是争论的焦点 要解析的列表,没有前导 参考正在运行的程序。 通常,这意味着sys.argv [1:]。 options是选项字符串 脚本想要的字母 认识到,需要的选项 一个后跟冒号的参数(':'; 即,与Unix相同的格式 getopt()使用)。
答案 1 :(得分:0)
如果您想读取参数,则该选项旁边应带有“:”,很少有不需要参数的选项,例如“ help”和“ verbose”,不需要“:”接着。
import getopt
import sys
def usage ():
print('Usage')
def main():
try:
opts, args = getopt.getopt(sys.argv[1:], 'x:y:h', ['xxx=', 'yyy=', 'help='])
except getopt.GetoptError as err:
print(err)
usage()
sys.exit()
for opt,arg in opts:
if opt in('-h', '--help'):
usage()
sys.exit( 2 )
elif opt in ('-x', '--xxx'):
print(arg)
elif opt in ('-y', '--yyy'):
print(arg)
else:
usage()
sys.exit()
if __name__ == "__main__":
main()