9

argumentsparserは、ファイルタイプの引数を取り、ファイルを直接開いたままにすることができます。次に例を示します。

parser.add_argument('infile', nargs='?', type=argparse.FileType('r'))
args = parser.parse_args().__dict__
input = args['infile'].readlines()

args['infile']プログラムを終了する必要がありますか?引数パーサーは私のためにそれを閉じますか?ドキュメントでこれについて言及しているところはどこにも見つかりませんでした。

4

2 に答える 2

5

いいえ、ファイルタイプオブジェクトを閉じません..これを参照してください

ここでの問題は、またはFileTypeを返す可能性があるため、常にファイル オブジェクトを閉じることができないことです。stdinstdout

クローズされていないファイル ハンドルが多数あると、一部の OS で問題が発生する可能性がありますが、それだけです。プラス面としては、argparse がその型引数として、文字列入力をチェックして変換できる任意の呼び出し可能オブジェクトを受け入れるという事実は、シンプルでクリーンで機能します。

こちらもご覧ください

于 2012-12-06T04:15:05.020 に答える
1

ソースを掘り下げると、ソースが閉じられないことがわかります。書き込みのためにファイルを開く必要があり、おそらくそれらを閉じたくないので、これは理にかなっています。

于 2012-12-06T04:20:28.590 に答える