2

まず、optparseがバージョン2.7以降非推奨になっていることは知っていますが、使用しているマシンで使用できるのはPython2.3のみです。

問題は、コマンドラインでオプションが指定された順序をどのように知るかです。たとえば、次のようになります。

python example.py -f foo -b bar

最初にオプションfを実行し、次にオプションbと

python example.py -b bar -f foo

反対のことをします。

optargsドキュメントを読んだ後に思いついた唯一の解決策は、callbackアクションを使用してオプションを保存し、他のオプションの相対的な位置を検出することです。これは、optionsオブジェクトが特定の順序に従っていないように見えるためです。

この問題に対する別の(おそらくより良い)解決策を知っていますか?

4

1 に答える 1

4

順序に応じて異なる動作をトリガーするオプションフラグを設定することは、慣例に反します。しかし、本当に注文を確認したい場合は、sys.argvを調べるだけです。

#assuming both -f and -b are given in cmdline and you need to check for order
index_f = sys.argv.find("-f")
index_b = sys.argv.find("-b")
if index_f < index_b: 
    # do something if -f is before -b
于 2011-02-14T16:51:53.577 に答える