Pythonでargparseを使ってオプションのstdinを指定する
2023-10-23 23:55:29
質問
私は非常に便利な構文を見つけました
parser.add_argument('-i', '--input-file', type=argparse.FileType('r'), default='-')
は入力ファイルを指定したり、標準入力を使用したりするためのもので、どちらも私のプログラムでは必要です。しかし、入力ファイルは常に必要というわけではありません。もし私が
-i
のうちの一つで入力をリダイレクトしていない場合は
$ someprog | my_python_prog
$ my_python_prog < inputfile
私はPythonのプログラムに入力を待ってほしくありません。私はそれがただ進み、デフォルト値を使用したい。
どのように解決するのですか?
標準ライブラリ argparseのドキュメント は、オプションの入出力ファイルを許可するために、この解決策を提案しています。
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('infile', nargs='?', type=argparse.FileType('r'),
... default=sys.stdin)
>>> parser.add_argument('outfile', nargs='?', type=argparse.FileType('w'),
... default=sys.stdout)
>>> parser.parse_args(['input.txt', 'output.txt'])
Namespace(infile=<_io.TextIOWrapper name='input.txt' encoding='UTF-8'>,
outfile=<_io.TextIOWrapper name='output.txt' encoding='UTF-8'>)
>>> parser.parse_args([])
Namespace(infile=<_io.TextIOWrapper name='<stdin>' encoding='UTF-8'>,
outfile=<_io.TextIOWrapper name='<stdout>' encoding='UTF-8'>)
関連
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] なぜC++はPythonよりもstdinからの行の読み込みが遅いのですか?
-
[解決済み] Argparse オプションの位置引数?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み] SQLAlchemy: セッションの作成と再利用
-
[解決済み] dict を txt ファイルに書き、それを読み取る?
-
[解決済み] あるオブジェクトが数であるかどうかを確認する、最もパイソン的な方法は何でしょうか?
-
[解決済み] subprocess.run()の出力を抑制またはキャプチャするには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] sys.stdoutがターミナルに接続されているかどうかを検出するにはどうすればよいですか?[重複している]。
-
[解決済み] SQLAlchemy: セッションの作成と再利用
-
[解決済み] django.db.migrations.exceptions.InconsistentMigrationHistory
-
[解決済み] dict を txt ファイルに書き、それを読み取る?
-
[解決済み] Pythonでマルチプロセッシングキューを使うには?
-
[解決済み] CSVデータを処理する際、1行目のデータを無視する方法を教えてください。
-
[解決済み] Pandasのデータフレーム内の文字列を'date'データ型に変換するにはどうしたらいいですか?
-
[解決済み] Pythonの検索パスを他のソースに展開する
-
[解決済み] Pythonでランダムなファイル名を生成する最良の方法
-
[解決済み] djangoのQueryDictをPythonのDictに変更するには?