Pythonを始めたばかりです。 Windowsでpythonスクリプトファイルを実行すると、出力ウィンドウが表示されますが、すぐに消えます。出力を分析できるように、そこにとどまる必要があります。どうすれば開いたままにできますか?
いくつかのオプションがあります:
既に開いている端末からプログラムを実行します。コマンドプロンプトを開き、次を入力します。
python myscript.py
そのためには、パスにpython実行可能ファイルが必要です。 環境変数の編集方法 をオンにして、C:\PYTHON26
(またはpythonをインストールしたディレクトリ)を追加します。
プログラムが終了すると、ウィンドウを閉じる代わりにcmdプロンプトに戻ります。
スクリプトの最後で待機するコードを追加します。 Python2の追加...
raw_input()
...スクリプトの最後で、 Enter キー。この方法は、スクリプトを変更する必要があり、作業が完了したら削除することを覚えておく必要があるため、面倒です。他の人のスクリプトをテストするときに特に迷惑です。 Python3の場合は、input()
を使用します。
一時停止するエディターを使用します。 python用に準備された一部のエディターは、実行後に自動的に一時停止します。他のエディターでは、プログラムの実行に使用するコマンドラインを構成できます。実行時に「python -i myscript.py
」として設定すると特に便利です。プログラム環境がロードされた状態で、プログラムの終了後にpythonシェルにドロップされるため、変数をさらに操作して、関数とメソッドを呼び出すことができます。
cmd /k
は、Pythonだけでなく、アプリケーションを閉じた後に残るコンソールウィンドウを使用して、コンソールアプリケーションを開く一般的な方法です。私が考える最も簡単な方法は、Win + Rを押し、cmd /k
と入力してから、実行ダイアログに目的のスクリプトをドラッグアンドドロップすることです。
既に開いているcmdウィンドウからスクリプトを開始するか、スクリプトの最後にPython 2に次のようなものを追加します。
raw_input("Press enter to exit ;)")
または、Python 3で:
input("Press enter to exit ;)")
例外が発生した場合にウィンドウを開いたままにするには(ただし、例外の印刷中)
if __== '__main__':
try:
## your code, typically one function call
except Exception:
import sys
print sys.exc_info()[0]
import traceback
print traceback.format_exc()
print "Press Enter to continue ..."
raw_input()
いずれにしてもウィンドウを開いたままにするには:
if __== '__main__':
try:
## your code, typically one function call
except Exception:
import sys
print sys.exc_info()[0]
import traceback
print traceback.format_exc()
finally:
print "Press Enter to continue ..."
raw_input()
Python3の場合は、- input()
の代わりにraw_input()
を使用 にする必要があり、もちろんprint
ステートメントを変更する必要があります。
if __== '__main__':
try:
## your code, typically one function call
except BaseException:
import sys
print(sys.exc_info()[0])
import traceback
print(traceback.format_exc())
print("Press Enter to continue ...")
input()
いずれにしてもウィンドウを開いたままにするには:
if __== '__main__':
try:
## your code, typically one function call
except BaseException:
import sys
print(sys.exc_info()[0])
import traceback
print(traceback.format_exc())
finally:
print("Press Enter to continue ...")
input()
前に答えを組み合わせることができます:(Notepad ++ユーザーの場合)
f5を押して現在のスクリプトを実行し、コマンドを入力します。
cmd /k python -i "$(FULL_CURRENT_PATH)"
この方法では、Notepad ++ pythonスクリプトを実行した後、インタラクティブモードのままになり、変数などをいじることができます。
次の2行でWindowsバッチファイルを作成します。
python your-program.py
pause
atexit
を使用すると、終了時にプログラムをすぐに一時停止できます。エラー/例外が終了の理由である場合、スタックトレースの出力後に一時停止します。
import atexit
# Python 2 should use `raw_input` instead of `input`
atexit.register(input, 'Press Enter to continue...')
私のプログラムでは、except
句にatexit.register
への呼び出しを配置し、何かがうまくいかなかった場合にのみ一時停止するようにしました。
if __== "__main__":
try:
something_that_may_fail()
except:
# Register the pause.
import atexit
atexit.register(input, 'Press Enter to continue...')
raise # Reraise the exception.
python 2では、raw_input()で実行できます。
>>print("Hello World!")
>>raw_input('Waiting a key...')
python 3では、input()で実行できます。
>>print("Hello world!")
>>input('Waiting a key...')
また、time.sleep(time)でそれを行うことができます
>>import time
>>print("The program will close in 5 seconds")
>>time.sleep(5)
同様の問題がありました。 Notepad ++では、コードが終了した直後にcmdウィンドウを閉じるコマンドC:\Python27\python.exe "$(FULL_CURRENT_PATH)"
を使用していました。
今、cmdウィンドウを開いたままにするcmd /k c:\Python27\python.exe "$(FULL_CURRENT_PATH)"
を使用しています。
Python 3で
input('Press Enter to Exit...')
トリックを行います。
デスクトップショートカットからスクリプトを実行する場合は、pythonファイルを右クリックし、Send to|Desktop (create shortcut)
を選択します。次に、ショートカットを右クリックして、[プロパティ]を選択します。 [ショートカット]タブで[ターゲット:]テキストボックスを選択し、パスの前にcmd /k
を追加して[OK]をクリックします。これで、ショートカットは閉じずにスクリプトを実行し、input('Hit enter to close')
は不要になります。
マシンにpythonのバージョンが複数ある場合は、cmd/kとsciptパスの間に必要なpython実行可能ファイルの名前を次のように追加してください。
cmd /k python3 "C:\Users\<yourname>\Documents\your_scipt.py"
ウィンドウを開いたままにするために、Anuragに同意します。これは、短い小さな計算タイプのプログラム用にウィンドウを開いたままにするためにしたことです。
これは、テキストのないカーソルを表示するだけです:
raw_input()
この次の例では、プログラムが終了し、プログラム内の別の入力プロンプトを待機していないという明確なメッセージが表示されます:
print('You have reached the end and the "raw_input()" function is keeping the window open')
raw_input()
注意!
(1)python 3には、raw_input()はなく、input()のみがあります。
(2)単一引用符を使用して文字列を示します。それ以外の場合、「raw_input()」などのようにダブルスを入力すると、テキストではなく関数、変数などと見なされます。
この次の例では、二重引用符を使用します。wo n'tは、「the」と「function」の間に引用符の切れ目があると考えているため動作しますしかし、あなたがそれを読むとき、あなた自身の心はそれを完全に理解することができます:
print("You have reached the end and the "input()" function is keeping the window open")
input()
うまくいけば、これはコンピューターを始めたばかりで、コンピューターがまだどのように考えているかをまだ理解していない他の人たちを助けます。しばらく時間がかかります。 :o)
input
およびraw_input
の他に、次のような無限のwhile
ループを使用することもできます:while True: pass
(Python 2.5 +/3)またはwhile 1: pass
(Python 2/3のすべてのバージョン)。ただし、これには計算能力が必要になる場合があります。
コマンドラインからプログラムを実行することもできます。 python
をコマンドライン(Mac OS Xターミナル)に入力すると、Python 3.?.?
(Pythonバージョン)と表示されます。Pythonバージョンが表示されないか、python: command not found
と表示されます。上記の値)/ type C:\(Python folder\python.exe
。それが成功した場合は、python
またはC:\(Python installation)\python.exe
とプログラムのフルディレクトリを入力します。
非常に遅れた答えですが、次を含むpythonbat.bat
というWindowsバッチファイルを作成しました。
python.exe %1
@echo off
echo.
pause
そして、pythonbat.bat
ファイルのデフォルトハンドラとして.py
を指定しました。
ファイルエクスプローラーで.py
ファイルをダブルクリックすると、新しいコンソールウィンドウが開き、Pythonスクリプトが実行され、任意のキーを押すまで一時停止(開いたまま)されます...
Pythonスクリプトを変更する必要はありません。
コンソールウィンドウを開いて、python myscript.py
を指定することもできます。
(@maurizioがすでにこの正確な答えを投稿していることに気付いた)
PowerShellを開いて「python」と入力できます。 Pythonがインポートされた後、ソースコードをコピーしてお気に入りのテキストエディターから貼り付け、コードを実行できます。
ウィンドウは閉じません。