Pythonreadfile.py
のargparse
.
プログラムは、位置引数 で指定されたファイルから読み取りますinput
。追加の引数を指定しないと、このプログラムはあまり面白くありません。読み込んで終了するだけinput
です。オプションの引数--output [OUTPUT_FILE]
は、入力ファイルをファイルに書き込む必要があることを示します。OUTPUT_FILE
もオプションです。指定されていない場合、入力は に書き込まれdefault.out
ます。
引数パーサーを次のように設定しました。
parser = argparse.ArgumentParser(description='Read from a file')
parser.add_argument(
'input',
help='file to read from')
parser.add_argument(
'--output',
nargs='?',
const='default.out',
default=None,
help="""write file to %(metavar)s. If %(metavar)s isn't
specified, write file to %(const)s.""",
metavar='OUTPUT_FILE')
args = parser.parse_args()
return args.file, args.output_file
コマンドラインに表示されないdefault=None
場合に、その不在を None で検出できるように使用することに注意してください。--ouput
これにより、次のような使用法の署名が得られます。
usage: readfile.py [-h] [--output [OUTPUT_FILE]] input
実行すると、これは引数を期待どおりに処理します
python readfile.py input.in --output somefile.out
また
python readfile.py --output somefile.out input
実行すると設定output
されますdefault.out
python readfile.py input.in --output
しかし、私が走れば
python readfile.py --output input.in
引数が少なすぎると不平を言っています。argparse は、このパターンを解釈するのに十分「賢い」と思い、input
toinput.in
およびoutput
toに設定しましたdefault.out
。生成された使用法は、これを示唆しています。
何か不足していますか?