問題タブ [docopt]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Python 3 の docopt はヘルプ画面のみを出力し、機能を実行しません
Python 3 で初めて docopt を使用しています。コードを実行すると、出力には使用オプション データのみが表示され、モジュール内の関数は実行されません。
ここに例があります。私はファイルにこのコードを持っています。
このファイルをさまざまなオプションで実行すると、得られるのは docstring のレプリカだけです。docopt が docstring 引数から作成した辞書のコピーが表示されるはずです。次に、関数呼び出しからの出力結果も表示する必要があります。しかし、docstring 以外は何も表示されません。
したがって、次のようなコマンドライン呼び出しを行うと:
返されるのは次のすべてです。
定義された関数を実際に実行できるように、何が問題なのかを知りたいです。
r - littler/docopt の引数の引用符
key="value"
少しスクリプトのように文字列を渡したい。bashには、次のものがありますargtest.sh
:
これを呼び出して、シェルからの引用符をバックスラッシュで保持すると、出力に表示されます。
しかし、littler/docopt からそのような引数を取得することはできません。これが私のテストスクリプトです:
シェルの例のような単純なバッククォートは機能しません:
そして、私が試した他のすべても失敗します。お気に入り:
ここで勝者になれる人はいますか?
python - Python スクリプトで __name__ == '__main__' を 2 回実行するよりも優れたソリューション
docopt を使用する複数の Python スクリプトがあります。
私の問題は、2 つのスクリプトで使用できるオプションがわずかに異なることです。1 つのオプションは 1 つのスクリプトに存在しますが、もう 1 つのスクリプトには存在しません。
以下に最小限の作業例を含めました。
私が実行した場合:
--name=John も module1.py に渡され、有効なオプションではないため、スクリプトは実行されません。
私の実際のスクリプトでは、docopt が引数を解析した後にいくつかのインポートがあるため、単純に docopt 呼び出しをスクリプトの最後に移動することはできません ( if __name__ == '__main__':
)。これを行うと、インポートされたスクリプトのインポートが呼び出されず、未定義の名前エラーが発生します。
回避策を見つけましたが、それは良い習慣ではないと思います。
私がやっていることは追加です:
の直後import docopt
。
ただし、スクリプトにこれらのステートメントを 2 つ含めることは、悪い習慣だと思います。ただし、現時点では他の回避策は考えられません。
誰かがより良い解決策を提案できますか? 前もって感謝します。
main.py
module1.py:
編集:
other_file モジュールにはさまざまなバージョンがあることを忘れていました。このため、docopt オプションの 1 つがファイルへのパスです。これは、次のように sys.path に追加されます。
このため、システム パスに other_file モジュールへのパスを追加するには、グローバル スコープで docopt をインポートする必要があります。
グローバル変数 (下の NUM、実際のファイルの DEBUG) なしで生活できます。
python - sys.argv を docopt に置き換える
私はいくつかの文字列置換を組み込むことに取り組んでおり、現在引数は を使用してスクリプトに渡されますsys.argv[i]
。sys を docopt に置き換えたいのですが、これまでのところドキュメントが比較的不明確であることがわかりました。
私のコードが現在動作する方法は
(複数のパラメーターを含めて置き換えることもできます)
これは次にによって処理されます
ここで、params は一連の定義済みパラメーターの名前です。
これをdocoptで動作させることができるはずだと思いますが、これまでのところ、私が持っているものはもっと似ています
しかし、これは何も渡さず、公式ドキュメントで提供されている詳細の終わりのようです。docopt に詳しい人は、コマンドライン引数をより効果的に渡す方法を知っていますか? または、この後に sys.argv を「arguments」に置き換える必要がありますか?
ありがとう!
node.js - オプション パラメータのオプション値
--watch
2 番目の使用シナリオでは、パラメーターをオプションにしたいと思います。ただし、採用する場合は、その値をオプションにして、指定しない場合はデフォルトに戻したいと思います。私は次のようなことを考えていたでしょう
動作します。しかし、それは私にUnmatched '('
エラーを与えます。例えば、
これを達成する方法はありますか?
Node.js: 5.1.0 docopt: 0.6.2