web-dev-qa-db-ja.com

Pythonでgetopt / OPTARGを使用する方法は?引数(9)が多すぎる場合に引数をシフトするにはどうすればよいですか?

Pythonでgetopt/optargを使用するには?

27
Mandar Pande

これは私がそれを行う方法の例です、私は通常同じ基本テンプレートを使用します:

import sys
import getopt

try:
    opts, args = getopt.getopt(sys.argv[1:], 'm:p:h', ['miner=', 'params=', 'help'])
except getopt.GetoptError:
    usage()
    sys.exit(2)

for opt, arg in opts:
    if opt in ('-h', '--help'):
        usage()
        sys.exit(2)
    Elif opt in ('-m', '--miner'):
        miner_name = arg
    Elif opt in ('-p', '--params'):
        params = arg
    else:
        usage()
        sys.exit(2)

9つのパラメーターの制限があるとは思わない。

48
Makis

グーグル検索が役立つだろう。標準ライブラリの getopt および argparse モジュールを見てください:

import argparse

parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
                   help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
                   const=sum, default=max,
                   help='sum the integers (default: find the max)')

args = parser.parse_args()
print args.accumulate(args.integers)

次に、期待どおりに実行します。

$ prog.py -h
usage: prog.py [-h] [--sum] N [N ...]

Process some integers.

positional arguments:
 N           an integer for the accumulator

optional arguments:
 -h, --help  show this help message and exit
 --sum       sum the integers (default: find the max)

適切な引数を指定して実行すると、コマンドライン整数の合計または最大のいずれかが出力されます。

$ prog.py 1 2 3 4
4

$ prog.py 1 2 3 4 --sum
10

これは、標準ライブラリから直接です。

13
brice

モジュールのpythonドキュメントgetopthttp://docs.python.org/library/getopt.html?highlight=getopt# module-getopt )?getoptの使用方法の簡単な例を示しますシフト引数とはどういう意味ですか?ユーザーが9個を超える引数を使用していないことを確認したい場合は、スクリプトに渡されるすべてのオプション/引数を含むsys.argvリストの長さを確認できます。最初の要素は呼び出されるスクリプトの名前であるため、長さは常に少なくとも1です。何かのようなもの:

if len(sys.argv) > 10
    print('Too many arguments.')
4
iceaway