无法通过getopt处理参数 python
为了给我的Python脚本提供一些选项,我想引入一些参数。我发现用getopt这个方法在Python中比较好,但当我运行我的脚本时,它什么都不做。请帮帮我!!!这是我的代码:
def main(argv):
try:
opts, args = getopt.getopt(argv, 'hi:o:t', ['help', 'input=', 'output='])
except getopt.GetoptError:
usage()
sys.exit(2)
file = None
outfile = None
for opt, arg in opts:
if opt in ('-h', '--help'):
usage()
sys.exit(2)
elif opt in ('-i', '--input'):
file = arg
elif opt in ('-o', '--output'):
outfile = arg
elif opt == '-t':
maininfo(file,outfile)
else:
usage()
sys.exit(2)
if __name__ =='__main__':
main(sys.argv[1:])
3 个回答
0
请查看这个回答:https://stackoverflow.com/a/1540399/2542738
简单来说,你需要把 'python'
从 opts
里去掉,因为它是列表 opts
的第一个元素。你可以用 opts.pop(0)
来做到这一点,这样就没问题了。
5
我建议你增加更多的日志记录。这不仅能帮助你现在调试,还能帮助将来使用你脚本的人。
def main(argv):
filename = None
outfile = None
call_maininfo = False
try:
opts, args = getopt.getopt(argv, 'hi:o:t', ['help', 'input=', 'output='])
if not opts:
print 'No options supplied'
usage()
except getopt.GetoptError, e:
print e
usage()
sys.exit(2)
for opt, arg in opts:
if opt in ('-h', '--help'):
usage()
sys.exit(2)
elif opt in ('-i', '--input'):
filename = arg
elif opt in ('-o', '--output'):
outfile = arg
elif opt == '-t':
call_maininfo = True
else:
usage()
sys.exit(2)
print 'Processed options [{0}] and found filename [{1}] and outfile [{2}]'.format(
', '.join(argv),
filename,
outfile,
)
if call_maininfo:
print 'Calling maininfo()'
maininfo(filename, outfile)
我还把调用 maininfo()
的地方移出了循环,因为你可以在文件名之前提供 -t
!