このコマンドラインでプログラムを書く必要があります:
demo.py [-h] -f FILENAME [-o]
ファイル名は必須で、追加先のファイルを意味します。-o フラグは、ファイルが上書きされることを意味します。
この argparse コードはほとんど動作します:
import argparse
parser = argparse.ArgumentParser(description='A foo that bars')
parser.add_argument("-f",
"--file", dest="filename", required=True,
type=argparse.FileType('a+'),
help="The output file (append mode, see --overwrite).")
parser.add_argument("-o",
"--overwrite", dest="overwrite",
action='store_true',
help="Will overwrite the filename if it exists")
args = parser.parse_args()
if args.overwrite:
args.filename.truncate(0)
print >> args.filename, 'Hello, World!'
しかし、-
(stdout) をファイル名として指定すると、次のエラーが発生します。
error: argument -f/--file: invalid FileType('a+') value: '-'
a
またはを試しr+
ましたが、同じエラーが発生します。Windows で Python 2.7 を使用していますが、Linux でも動作する必要があります。コマンド ラインは、レガシー サポートのために変更できません。
argparse
stdout 省略形の組み込みサポートを維持しながら、上書き機能をサポートするにはどうすればよいですか?