入力ファイルには、モジュールを使用できfileinput
ます。入力ファイルの一般的な規則に従います。ファイルが指定されていないか、ファイル名が「-」の場合は stdin を読み取り、それ以外の場合はコマンドラインで指定されたファイルから読み取ります。
-f
と--file
オプションは必要ありません。プログラムが常に入力ファイルを必要とする場合、それはオプションではありません。
-o
さまざまなプログラムで出力ファイル名--output
を指定するために使用されます。
オプトパース
#!/usr/bin/env python
import fileinput
import sys
from optparse import OptionParser
parser = OptionParser()
parser.add_option('-o', '--output',
help='Specifies the output file. The default is stdout.')
options, files = parser.parse_args()
if options.output and options.output != '-':
sys.stdout = open(options.output, 'w')
for line in fileinput.input(files):
process(line)
argparse
argparse
モジュールを使用すると、ファイルを引数として明示的に指定できます。
#!/usr/bin/env python
import fileinput
import sys
from argparse import ArgumentParser
parser = ArgumentParser()
parser.add_argument('files', nargs='*', help='specify input files')
group = parser.add_mutually_exclusive_group()
group.add_argument('-o', '--output',
help='specify the output file. The default is stdout')
group.add_argument('-i', '--inplace', action='store_true',
help='modify files inplace')
args = parser.parse_args()
if args.output and args.output != '-':
sys.stdout = open(args.output, 'w')
for line in fileinput.input(args.files, inplace=args.inplace):
process(line)
注: --inplace
2 番目の例にオプションを追加しました。
$ python util-argparse.py --help
usage: util-argparse.py [-h] [-o OUTPUT | -i] [files [files ...]]
positional arguments:
files specify input files
optional arguments:
-h, --help show this help message and exit
-o OUTPUT, --output OUTPUT
specify the output file. The default is stdout
-i, --inplace modify files inplace