2

スクリプトの場合、現在、OptionParser変数を入力に追加するために使用しています。ただし、現在のオプションはすべてブール値であり、argv代わりに使用する方が解析しやすいようです。例えば:

 $ script.py option1 option4 option6 

そして、次のようにします。

if 'option1' in argv:
    do this
if 'option2' in argv:
    do this
etc...

オプションがすべてブール値の場合、argvoverを使用することをお勧めしますか?OptionParser

4

2 に答える 2

7

「しかし、私の現在のオプションはすべてブール値であり、代わりに argv を使用して解析する方が簡単なようです。」

argv を使用することに問題はありません。argv を使用する方が簡単な場合は、使用しない理由はありません。

于 2012-04-09T19:58:37.033 に答える
2

OptionParser は非推奨になりました。古いバージョンの Python を使用している場合を除き、ArgParser モジュールを使用する必要があります。

1 回限りのスクリプトの場合、sys.argv を自分で解析しても問題はありません。独自のモジュールを作成する代わりに、引数解析モジュールを使用することにはいくつかの利点があります。

  • 標準化。"-test" のようなオプションを許可しますか? 標準は通常、複数文字のオプション (例: "--test") に対して 2 つのアンダースコアであるためです。モジュールを使用すると、標準が既に定義されているため、標準の定義について心配する必要はありません。
  • エラーキャッチとヘルプメッセージが必要ですか? ArgParse を使用すると、その多くを無料で取得できるからです。
  • 他の誰かがあなたのコードを保守しますか? ArgParse については、すでに多くのドキュメントと例があります。さらに、引数の型と数を指定する必要があるため、やや自己文書化されていますが、これは sys.argv パーサーを見ても必ずしも明らかではありません。

基本的に、コマンド ライン オプションが時間の経過とともに変更されることが予想される場合、またはコードが他の誰かによって変更される必要があることが予想される場合、ArgParse のオーバーヘッドはそれほど悪くなく、おそらく将来的に時間を節約できます。

于 2012-04-09T20:36:55.063 に答える