2012-04-09 8 views
1

スクリプトの場合、私は現在入力に変数を追加するのにOptionParserを使用しています。しかし、私の現在のオプションはすべてブール値であり、代わりにargvを使って解析するほうが簡単なようです。たとえば:その後、OptionParserとsys.argvの使用

$ script.py option1 option4 option6 

そしてような何か:

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

はoptionalsがすべてのブール値のときOptionParserargvを使用することが提案されますか?

+0

私はまだgood ol 'getoptを使用しています。ツールが今オプションを取らなくても、とにかく典型的なgetoptパターンでラップするだけです。 – Keith

答えて

6

"しかし、私の現在のオプションはすべてブール値で、 は単にargvを使って解析する方が簡単かもしれません。"

ARGVを使うことには何も問題はありません、それはARGVを使用する方が簡単だ場合は、しないように理由はありません。

+1

もちろん、これは同じフィーチャセットの努力を比較する限り適用されます。適切なコマンドライン引数パーサが '-h 'のような無料の特典や値を与えるためのさまざまな方法(' -X2'、 '-X2)をサポートするのではなく、はるかに信頼性の高いインターフェースを可能にします。 '、' X = 2')。単純なニーズであっても、それほど複雑ではありません。 – delnan

2

OptionParserは廃止されました。古いバージョンのPythonで動かない限り、ArgParserモジュールを使用する必要があります。

一度限りのスクリプトでは、sys.argvの解析に何も問題はありません。引数を解析するモジュールを使用するのには、独自の関数を書くのではなく、いくつかの利点があります。

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

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