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