問題タブ [optionparser]
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.
ruby - Ruby OptionParser の空のスイッチ "-" の動作
編集:
OptionParser を使用してコマンド ライン入力を適切に処理するコードを作成しました。私は2つの大きなヒットに直面しています。
- 空のスイッチ '-' を渡してもエラーにはなりません。もちろん、一部のプログラムはそれを有効と見なしますが、私のものはそうすべきではありません。
- このプログラムには 2 つの必須スイッチが必要ですが、1 つのスイッチを問題なく受け入れます。たとえば
program.ruby -f foo -b bar
、有効な入力であり、両方のスイッチが :REQUIRED です。ただし、スイッチを 1 つだけ指定しても問題はなく、これは望ましい動作ではありません。
最初のケースでは、これを行いました:
それは正常に動作します。しかし、これは適切な方法ですか?
2 番目のケースについては、OptionParser.new ブロック内で解決策を探しましたが、見つかりませんでした。例えば
OptionParser.new ブロックの外でそれを行うのが通常の方法ですか?
ruby - OptionParser で単一の「-」(ダッシュ) を処理するには?
重複の可能性:
Ruby OptionParser の空のスイッチ「-」の動作
OptionParser を使用してコマンド ライン入力を適切に処理するコードを作成しました。私は2つの大きなヒットに直面しています。
- 空のスイッチ '-' を渡してもエラーにはなりません。
- このプログラムには 2 つの必須スイッチが必要ですが、1 つのスイッチを問題なく受け入れます。
最初のケースでは、これを行いました:
編集(成功に飛びつきました):空のスイッチの場合だけでなく、スイッチが空でない場合にも機能します。これどうやってするの?
2 番目のケースについては、OptionParser.new ブロック内で解決策を探しましたが、見つかりませんでした。OptionParser.new ブロックの外でそれを行うのが通常の方法ですか?
python - Python で optparse を使用して変数を定義する
optparse を使用して変数を設定する方法に興味があります。私はそのようにプログラムを実行します。
programname.py -dc:\users\\etc\etc\etc
-d C:\Users\\etc\etc を使用して、後でプログラムで使用する「パス」という変数を設定できるようにしたいと考えています。これはできますか?これが私が持っているoptionparserコードです。
辞書を作成するために使用する Path 変数を後で呼び出します。
私が得るエラーは次のとおりです。
E:>japp_id.py -d "C:\Users\\AppData\Roaming\Microsoft\Windows\Recent\ AutomaticDestinations" トレースバック (最新の呼び出しが最後): ファイル "E:\japp_id.py"、30 行目、 for os.listdir(path) の ID: NameError: name 'path' が定義されていません
ruby - Ruby OptionParser が MissingArgument をスローする
この前に 2 つのことを述べさせてください。
1) Stack Overflow と Google でこの回答を検索しました。
2) 今日は、Ruby をいじろうとした最初の日です。
よしよし。そこで、Homebrew を使用して 1 つのコマンドで MySQL、PHP、Redis、および xdebug をインストールするために使用できる Ruby スクリプトを作成しようとしています。このコマンドは次のようになります。
./phpserver.rb --with-php --with-mysql --with-xdebug --with-redis
ただし、上記を実行すると「引数がありません: --with-redis」が表示されます。「--with-redis=1.0」を使用して Redis のバージョンを強制するか、オプションを含めない場合、このエラーはなくなります。
これらのオプションはどれも必須ではありません (はい、スクリプトがまだゼロのオプションを処理していないことはわかっています)。
私は完全に困惑しています。あなたが私をリンクしたいという明白な答えがあれば、それは問題ありません. Ruby の知識が不足していることを前もってお詫びします。これは、私が最初に Ruby に飛び込むのを助けるためのサイド プロジェクトです。
これが私のスクリプトです:
python - オプションが指定されたときの optionparser のデフォルトの選択を設定します
オプションの --list-something オプションを解析する python オプション パーサーがあります。また、 --list-something オプションにオプションの引数 (オプション) を持たせたい
--list-something が指定された場合だけでなく、引数を使用してdefault="simple"
もここでは機能しません。それ以外の場合は常に simple がデフォルトになります。
上記のコードはこれを生成しています:
しかし、私はこれが起こることを望みます:
Python 2.4 から 3.0 まで (3.0 は含まれていません) ですぐに使えるものが欲しいです。
argparse は python 2.7 でのみ導入されたので、これは私が使用できるものではありません。
python - pythonOptionParser.has_optionエラー
私のプログラムには以下の行があります
このスクリプトに-tオプションが指定されていない場合でも、parser.has_option( "-t")がtrueと評価されているため、上記のprintステートメントが出力されています。私はここで何かが欠けていますか?よろしくお願いします。
python - 大規模なプロジェクトでOptionParserとsphinx-buildの競合をどのように解決する必要がありますか?
触れたくない多くの外部ライブラリを含む大規模なPythonプロジェクトがあり、sphinxを使用してドキュメントを生成したいと思います。私の問題は、「make html」を実行するたびに、次のエラーが発生することです。
この問題は、文書化するディレクトリの一部にOptionParserがある場合に発生することをすでに理解しています(OptionParserはsphinxと競合していますか?)。私は実際にそれらのディレクトリでOptionParserを使用し、それをでラップしない多くのスクリプトを持っていif __name__ == "__main__": ...
ます。私の質問は:
これらのスクリプトに触れずにドキュメントを生成するにはどうすればよいですか?
それらのファイル/パスを除外する方法はありますか?conf.pyでexclude_patternsを試しましたが、機能しませんでした。何故かはわからない。そのエラーをキャッチする方法はありますか?
アップデート
setup.py
問題は、によって解析されたツリー内のファイルであることが判明しましたautodoc
。
ruby - Ruby OptionParser: 指定されていないすべてのオプションを処理する
で指定されていないすべてのオプションのカスタム プロセッサを使用しようとしていますOptionParser
。ただしparse
、最初の不明なオプションが見つかったときに例外が発生します。
未処理のパラメータをすべて取得して手動で処理することはできますか?
ruby - Ruby OptionParser: 2 つのオプション、1 つの引数
OptionParser を使用して複数のオプションを読み込み、それらすべてを 1 つのファイル名で動作させようとしています。パラメータなしで実行Ex: myprogram.rb -a -b file.txt
できるようにしながら、2 つのオプションで必須の引数を共有するにはどうすればよいですか? -h
現在、上記の行はそのパラメーターとして-a
takeを作成するだけです。-b
編集:
それが何をしているのか:
私がする必要があること:
ノート:
ls -a ..
これらのコマンドは、ls -l ..
と同様に独立して同時に実行できる必要がls -a -l ..
ありますが、ファイル名が指定されていない場合、どちらのコマンドも機能しないはずです。理想的には、このソリューションは任意のn個のオプションで機能するはずです。
ruby - コマンドラインの代わりに引数フォームファイルを解析する OptionParser
Ruby を使用して、コマンド ライン引数を取るコードを実行しています。今、私は異なるオプションで同じプログラムを使用しようとしているので、オプションをファイルに入れています。プログラムが各行を読み取ってオプションを解釈し、それに応じてプログラムを実行するようにします。
しかし、私はこのエラーが発生します。"C:/Ruby193/lib/ruby/1.9.1/optparse.rb:1348:in block in parse_in_order': undefined method
shift' for "--c execue --query unix --Servername abc123":String (NoMethodError)"
ファイルを読み取り、行を文字列として扱うことを理解しています。しかし、このシフトエラーを克服し、コマンドプロンプトで入力されたかのように行を処理する方法があるかどうか疑問に思っています. またはより良い解決策。
これが私のコードです。
ファイルの内容は以下 --c execue --query unix --Servername abc123
私も micro-optparse を使用しようとしましたが、同じエラーに直面しています。回避策はありますか?
更新: 「@mu is too short」からの提案に従って、以下のオプションを試しました。end.parse!("#{Shellwords.shellsplit(行)}") および/または end.parse!(Shellwords.shellsplit(行))。しかし、どれも機能しませんでした。
また、「line = line.split("\t")」と end.parse!(line) を使用して行を配列として分割しようとしました。--c execue --query unix --Servername abc123 として出力
しかし、今ではブロックとしてエラーが発生します:無効なオプション --c execute
更新: #2 エラーを見ると、問題は間違ったパラメーター (-c) にありますが、Array .
更新: 3 配列の受け渡しは、-c などの短い形式の引数に対してのみ機能しましたが、長い形式が指定された場合、無効な引数エラーで失敗しました。
optparse に関するドキュメントはあまりありません。マイクロパースも試しましたが、デフォルトの値が必要で、オプションではありません:(