批量大小的参数未被捕获。任何的想法?

时间:2013-05-24 18:36:47

标签: python python-2.7

我确实有以下脚本来捕获命令行参数。批量大小的第三个选项没有设置任何想法? 仅供参考:仅输入&输出文件选项是必需参数。批量是可选的。

import sys, getopt
import os
try:
    opts, args = getopt.getopt(argv,"hi:o:b",["ifile=","ofile=","bsize="])
except getopt.GetoptError:
    print 'file.py -i <inputfile> -o <outputfile> -b<batchsize>[default=20000000]'
    sys.exit(2)
for opt, arg in opts:
    print opt
    if opt == '-h':
        print 'file.py -i <inputfile> -o <outputfile> -b<batchsize>[default=20000000]'
        sys.exit()
    elif opt in ("-i", "--ifile"):
        inputFile = arg
    elif opt in ("-o", "--ofile"):
        outputFile = arg
    elif opt in ("-b", "--bsize"):
        print "Another option %s" % opt
        batchsize = arg 

2 个答案:

答案 0 :(得分:2)

此脚本存在多个问题,包括缩进错误和无法首先初始化设置...但是我们假设您只是错误地复制/粘贴它。

答案是你在getopt参数中的“b”之后缺少一个“:”。

这一行:

opts, args = getopt.getopt(argv,"hi:o:b",["ifile=","ofile=","bsize="])

实际应该是:

opts, args = getopt.getopt(argv,"hi:o:b:",["ifile=","ofile=","bsize="])

答案 1 :(得分:1)

如果您不介意,我会推荐argparse。它可以更好地使用,而不是像笨蛋一样笨重。

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-i", "--ifile", required=True)
parser.add_argument("-o", "--ofile", required=True)
parser.add_argument("-b", "--bsize", type=int, default=20000000)
parser.parse_args()
input_file = parser.input