0

コマンドライン引数をキャプチャする次のスクリプトがあります。バッチ サイズの 3 番目のオプションが設定されていません。 参考までに: 入力および出力ファイル オプションのみが必須パラメーターです。バッチはオプションです。

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 
4

2 に答える 2

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="])
于 2013-05-24T18:46:12.573 に答える
1

If you don't mind, I would recommend argparse. It is better usably and not as clunky as getopts.

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

etc.

于 2013-05-24T18:50:05.910 に答える