55

実際のスクリプトをパラメーターとして使用してPythonインタープリターを指すショートカットを使用して、WindowsタスクバーからコマンドラインPythonスクリプトを実行しています。

スクリプトが処理された後、インタプリタは終了し、出力ウィンドウが閉じられるため、スクリプト出力を読み取ることができなくなります。

キーが押されるまでインタープリターウィンドウを開いたままにする最も簡単な方法は何ですか?

バッチファイルでは、一時停止してスクリプトを終了できます。私がPythonで見つけたこれに最も近いのは、(キーの代わりに)リターンキーを押す必要があるため、raw_input() 最適ではないということです。

4

13 に答える 13

58

1つの方法は、最後にaを残してraw_input()、スクリプトが終了する前にEnterキーを押すのを待つことです。

于 2009-02-23T12:30:06.483 に答える
44

試してみてくださいos.system("pause")—私はそれを使用しました、そしてそれは私のために働きました。

import osスクリプトの先頭に必ず含めてください。

于 2010-11-09T04:41:40.850 に答える
14

閉じる前に入力を待つ必要はありません。次のようにコマンドを変更するだけです。

cmd /K python <script>

スイッチは次のコマンドを実行しますが、実行してから閉じるのとは/K対照的に、コマンドインタープリターウィンドウは開いたままにします。/C

于 2009-02-23T12:29:39.153 に答える
11

最良のオプション: os.system('pause')<-- これは実際には「続行するには任意のキーを押してください」というメッセージを表示しますが、追加するだけでraw_input('')はメッセージは出力されず、カーソルだけが使用可能になります。

答えには関係ありません:

os.system("some cmd command")コマンドはバッチファイル/コマンドコマンドを実行できるため、非常に優れたコマンドです。

于 2013-03-06T17:44:46.080 に答える
7

1 つの方法は、最後に raw_input() を残して、スクリプトが終了する前にエンターを押すのを待つことです。

msvcrt.* の代わりに raw_input() を使用する利点は、前者が標準の Python の一部であることです (つまり、完全にクロスプラットフォーム)。これは、スクリプト ファイル アイコンをダブルクリックした後、スクリプト ウィンドウが有効であることも意味します。

cmd /K python <script>
于 2009-02-23T12:51:41.020 に答える
5

msvcrtWindowsでは、モジュールを使用できます。

  • msvcrt.kbhit()
    Trueキー押下が読み取られるのを待っている場合に 戻ります。

  • msvcrt.getch()
    キー押下を読み取り、結果の文字をバイト文字列として返します。コンソールには何もエコーされません。キーを押すことがまだ利用できない場合、この呼び出しはブロックされますが、Enterキーが押されるのを待ちません。押されたキーが特別なファンクションキーであった場合、これは'\000'または'\xe0';を返します。次の呼び出しはキーコードを返します。このControl-C機能ではキー押下を読み取ることはできません。

Unixライクなシステムでも動作させたい場合は、 termiosモジュールとfcntlモジュールを使用してこのソリューションを試すことができます。

于 2009-02-23T12:28:33.133 に答える
1

Python にターミナルから単一の文字をバッファなしで読み取らせるのは少し難しいですが、それを行うためのレシピを次に示します。

レシピ 134892: Windows と Unix の両方で stdin から読み取る getch() のようなバッファーなしの文字読み取り (Python)

于 2010-11-09T04:49:09.253 に答える
0

外部のWConioモジュールがここで役立ちます:http://newcenturycomputers.net/projects/wconio.html

import WConio
WConio.getch()
于 2009-02-23T12:35:08.140 に答える
0
import pdb
pdb.debug()

これは、スクリプトのデバッグに使用されます。ブレイクにも役立つはず。

于 2009-02-23T18:35:12.223 に答える
0

入力すると

input("")

ユーザーがいずれかのボタンを押すのを待ってから続行します。また、引用符の間にテキストを入れることもできます。

于 2014-04-08T20:44:16.503 に答える