コマンドライン引数をファイルに入れて、argthonを使ってPythonプログラムに渡すことができます。接頭文字ではなく、次のようになります。 $ python myprogram.py 1 2 --foo 1 -A somefile.txt --bar 2
これはthis questionとほぼ同じですが、始めにいくつかの位置的な引数が必要です。その解決策がparse_args
を呼び出すと、ファイルに位置指定の引数がないと失敗します。argparseでオプション引数付きのファイルから引数を読み込む方法
0
A
答えて
1
somefile.txt
はprefix char
を使用して、その後
one
two
three
$ python myprogram.py 1 2 --foo 1 @somefile.txt --bar 2
が含まれている場合は、右の構文解析の開始時に、効果的に言い換えれば
$ python myprogram.py 1 2 --foo 1 one two three --bar 2
と同じです@ファイルが読み取られ、その内容がにスプライスされます0リスト。そこから解析が正常に行われます。
私が他の問題で提案したことの1つは、解析する前にスプライシングを実装することでした。
あなたが参照している答えは、custom
です。いつものAction
時点でちょうどnamespace
でvalue
を置き、このアクションは、ファイル読み込み、解析します。
parser.parse_args(f.read().split(), namespace)
をバリアントは、メインnamespace
に新しいnamespace
と選択的にコピーする値に解析します。
あなたの問題は、パーサにいくつかの必要な引数があることです。このファイルに含まれていない場合、このparse_args
はエラーを発生させます。それは驚くべきことではありません。
解決策の1つは、このファイルに異なるparser
を使用することです.1つは、ファイルの内容だけで動作するように設計されていることです。私はそれをグローバルに定義します。
alt_parser.parse_args(f.read().split(), namespace)
言い換えれば、あなたは、パラメータとして渡された
parser
を使用する必要はありません。
この上の変化は名前空間にファイル名を入れて、最初の構文解析後にそれを処理することです:
args = parser.parse_args()
if args.A:
argv = open(args.A).read().split()
args1 = alt_parser.parse_args(argv)
しかし、あなたは私たちが、すでに解析されてきたものを引数言うことができない、頼むかもしれないとそれを考慮に入れて-A
を処理しますか? parser
は状態マシンではありません。構文解析はその属性を変更しません。これまでの解析を反映する唯一の変数はnamespace
です。他のすべての解析変数は、呼び出しコードに対してローカルです。
関連する問題
- 1. 条件付きオプション引数のargparse
- 2. 数値ベクトルとして引数を読み込む方法
- 3. ダッシュで始まるオプションの位置引数付きのargparse
- 4. XAMLからパラメータを読み込み、Powershellスクリプトにビルド引数を書き込む
- 5. Python 2.7 Argparseオプションと必要な引数
- 6. XMLを読み込むforeach()の引数が無効ですか?
- 7. argparse:相互排他的な引数をオプションにする方法
- 8. python argparseを条件付きでオプションの引数で使用するには?
- 9. Python 3でargparseで複数のオプション引数を選択
- 10. 引数をファイルに書き込む方法。
- 11. java複数のJTextFieldを.txtファイルから読み込む方法
- 12. argparse:定位置引数の前にオプションの引数が必要です
- 13. Python argparseからファイルに引数名を書き込むにはどうすればよいですか?
- 14. webpack.NormalModuleReplacementPluginを使用してオプションの条件付きファイルを読み込む方法
- 15. perl6 stdinから読み込んでコマンドライン引数を取る方法は?
- 16. argparse:フラグと変数としてのオプションの引数
- 17. ファイル名の先頭に下線を引くファイルを読み込む方法は?
- 18. Python:コマンドライン引数を読み込むクラスをunittestする方法は?
- 19. 複数のファイルを読み込んでデータフレームに読み込む方法
- 20. オプション引数付きのGroovy Closure
- 21. 関数に渡されるすべての引数(対のみ$オプションの引数)のみのオプションの引数
- 22. python argparse必須入力ファイル引数
- 23. PythonキーワードのPython argparse引数
- 24. argparseのサブクラス引数パーサ
- 25. Argparse - 引数なしのカスタムアクション?
- 26. 複数のスレッドで書き込みファイルを読み込む
- 27. デフォルトの引数とオプションの引数を持つ方法は?
- 28. Pythonでbooleanコマンドライン引数を書き込む方法は?
- 29. Haskell:コマンドライン引数をintとして読み込むには?
- 30. Visual C++/CLIでファイルに書き込み、ファイルから読み込む方法は?
「@」はちょうど正しいことですが、別のプログラムの動作をコピーしています。意味あり;このトリックは、必要な位置のものを除いて同じ引数を持つ2番目のパーサを作成しています。 – petrelharp
まず、そのパーサを作成して、それをメインのものの「親」として使うことができます。それでは、 '子に'ポジションを追加するだけです。 – hpaulj