問題タブ [python-cmd]

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.

0 投票する
1 に答える
2063 参照

python - Cmd モジュールとの Python Twisted 統合

Python のTwistedCmdが好きです。合わせて使いたいです。

いくつかのことが機能しましたが、Twisted の LineReceiver で (Enter を押さずに) タブの keypres イベントをすぐに受け取る方法がわからないため、これまでのところ、タブ補完を機能させる方法がわかりませんでした。

これまでの私のコードは次のとおりです。

タブ補完とは別に、これはある程度機能します。「help」などのコマンドを入力すると、Cmd モジュールが結果を出力します。しかし、Twisted は一度に 1 行ずつバッファリングするため、Cmd モジュールの気の利いたタブ補完機能を失いました。LineProcessor.delimiter空の文字列に設定しようとしましたが、役に立ちませんでした。たぶん、LineReceiver の代わりに使用する Twisted の他の部分を見つける必要がありますか? または、すべての文字を 1 つずつ処理する必要がないようにする、より単純なアプローチがあるのでしょうか。

これをネットワーク アプリケーションにしたいので、Cmd だけを使用することはできません。一部のコマンドはデータを送信し、ネットワークからのデータの受信は非同期で行われます (ユーザーに表示されます)。

上記のコードから始めるか、まったく別のコードから始めるかに関係なく、ネットワーク イベントとタブ補完に応答する、素晴らしく使いやすいターミナル アプリケーションを Python で作成したいと思います。すでにあるものを使用でき、自分で実装しすぎる必要がないことを願っています。

0 投票する
1 に答える
981 参照

python - do_help()関数のPythoncmd動的ドキュメント文字列

私は、ユーザーがさまざまな言語を学ぶのを支援するためのPythonicコマンドライン「フラッシュカード」アプリに取り組んでいます。Pythonのcmdライブラリを使用して開発をスピードアップしたいと思います。特に興味深いのは、クラスのユーザーメソッドのドキュメント文字列を出力するcmd.Cmdクラスのdo_help()メソッドです。ただし、このアプリケーションは多言語であるため、言語固有のdocstringをドロップできるようにしたいと思います。

デコレータの使用に関するこのSOの質問を読みましたが、デコレータについてはほとんど知りません。デコレータについて学ぶことに多くの時間を費やす前に、デコレータが私の特定のジレンマに適しているかどうかを知りたいと思います。

皆さんはどう思いますか?この状況に対処するための最良の方法は何ですか?

私の問題についてもっと情報が必要な場合はお知らせください。

0 投票する
2 に答える
4862 参照

python - cmdでargparseを使用するPython

argparseから継承するインターフェイスのすべてのプロンプトのインタープリターとしてフックされたモジュールを使用する方法はありますcmdか?

cmd インターフェイスがline、オプションの引数と位置引数を使用して、実行時に bash シェルで渡されたオプションと引数を解釈するのと同じ方法で、典型的なパラメーターを解釈することを望み-ます。

0 投票する
0 に答える
652 参照

python - stdin と stdout パイプを置き換えて、Python Cmd インスタンスをリモート/プログラムで呼び出す方法は?

Python Cmdインスタンスを別のスレッドで実行し、プログラムの他の部分から入力を書き込んだり、出力を読み取ったりできるようにしたいと考えています。Cmd のコンストラクタでは、stdin(デフォルト: sys.stdin) と stdout(デフォルト sys.stdout) を指定することができます。読み取りと書き込みにStringIOモジュールを使用できると思っていましたが、Cmd は最初の文字列を読み取り、EOF に達して終了します。sys.stdin と同じ動作が必要なため、readline() は、読み取る入力があるまでブロックされます。

私はこのクラスを作りました。これは私が望むように動作します:

質問:

上記は私が必要とするものを達成するための通常の方法ですか? stdin と stdout のパイプに使用する標準クラスはありますか? 何かが欠けているような気がします。

0 投票する
1 に答える
132 参照

python - cmd.Cmd オブジェクトが値を返さない

cmd現在、Python のモジュールを使用してコマンド ベースのゲームを作成しています。

ある時点で、cmd.Cmdオブジェクトがネストされます。コマンド プロンプトを実行していると言うとA、ある時点でB内に新しいプロンプトが作成されAます。終了したら、特定の値を再度B返したいと思います。A私のすべての試行は、内部コマンドプロンプトが返されて終了しましたNonecmd.Cmdこの状況をよりよく理解するために、質問を単純化し、オブジェクトから戻り値を取得しようとしました。これは私が持っているものです:

そして、私がすでに試したシェルで:

cmd.Cmdオブジェクトに値を返させることができないようです。どうすればそれを行うことができますか、それとも私が知らない何らかの理由で不可能ですか?

0 投票する
1 に答える
598 参照

shell - 引数を入力せずにcmd繰り返しステートメントを使用するpythonインタラクティブシェル

Python は初めてで、定義済みの関数と引数を取り、if/then 形式で値を返す cmd を使用してインタラクティブ シェルに取り組んでいます。以下の例。しかし、私の問題は、ユーザーが関数を入力してユーザーに何かを返すたびに、Enter キーを押すと、最後に提供された出力を受け取ることです。

以下のコード例...しかし、基本的に、ユーザーがその問題について引数または関数を入力しない場合、私は何も表示したくないだけです "" または空のスペース。私は、else pass 引数でそれができると思っていましたが、明らかにそうではありませんでした。if と elif を試してみましたが、同じ結果でした。

「test arp」を使用した出力例。Enter キーを押すだけで、押された前の引数が返されます。

コード例: #!/usr/bin/env python

0 投票する
2 に答える
1991 参照

python - Python の cmd モジュールに基づいてインタラクティブ シェルの自動テストを作成する

Python 3 と cmd モジュールを使用してインタラクティブ シェルを構築しています。do_* 関数などの個々の関数をテストするために、py.test を使用して簡単な単体テストを既に作成しました。ユーザーの入力をシミュレートしてシェル自体と実際に対話する、より包括的なテストを作成したいと考えています。たとえば、次のシミュレートされたセッションをテストするにはどうすればよいですか。