web-dev-qa-db-ja.com

Pythonスクリプト出力ウィンドウを開いたままにする方法

Pythonを始めたばかりです。 Windowsでpythonスクリプトファイルを実行すると、出力ウィンドウが表示されますが、すぐに消えます。出力を分析できるように、そこにとどまる必要があります。どうすれば開いたままにできますか?

167
rohitmishra

いくつかのオプションがあります:

  1. 既に開いている端末からプログラムを実行します。コマンドプロンプトを開き、次を入力します。

    python myscript.py
    

    そのためには、パスにpython実行可能ファイルが必要です。 環境変数の編集方法 をオンにして、C:\PYTHON26(またはpythonをインストールしたディレクトリ)を追加します。

    プログラムが終了すると、ウィンドウを閉じる代わりにcmdプロンプトに戻ります。

  2. スクリプトの最後で待機するコードを追加します。 Python2の追加...

    raw_input()
    

    ...スクリプトの最後で、 Enter キー。この方法は、スクリプトを変更する必要があり、作業が完了したら削除することを覚えておく必要があるため、面倒です。他の人のスクリプトをテストするときに特に迷惑です。 Python3の場合は、input()を使用します。

  3. 一時停止するエディターを使用します。 python用に準備された一部のエディターは、実行後に自動的に一時停止します。他のエディターでは、プログラムの実行に使用するコマンドラインを構成できます。実行時に「python -i myscript.py」として設定すると特に便利です。プログラム環境がロードされた状態で、プログラムの終了後にpythonシェルにドロップされるため、変数をさらに操作して、関数とメソッドを呼び出すことができます。

140
nosklo

cmd /kは、Pythonだけでなく、アプリケーションを閉じた後に残るコンソールウィンドウを使用して、コンソールアプリケーションを開く一般的な方法です。私が考える最も簡単な方法は、Win + Rを押し、cmd /kと入力してから、実行ダイアログに目的のスクリプトをドラッグアンドドロップすることです。

45
tzot

既に開いているcmdウィンドウからスクリプトを開始するか、スクリプトの最後にPython 2に次のようなものを追加します。

 raw_input("Press enter to exit ;)")

または、Python 3で:

input("Press enter to exit ;)")
35
Anurag Uniyal

例外が発生した場合にウィンドウを開いたままにするには(ただし、例外の印刷中)

Python 2

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()

Python 3

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()
18
Antonio

前に答えを組み合わせることができます:(Notepad ++ユーザーの場合)

f5を押して現在のスクリプトを実行し、コマンドを入力します。

cmd /k python -i "$(FULL_CURRENT_PATH)"

この方法では、Notepad ++ pythonスクリプトを実行した後、インタラクティブモードのままになり、変数などをいじることができます。

13
feinmann

次の2行でWindowsバッチファイルを作成します。

python your-program.py

pause
9
maurizio

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.
6
leewz

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)
6
Brandon Aguilar

同様の問題がありました。 Notepad ++では、コードが終了した直後にcmdウィンドウを閉じるコマンドC:\Python27\python.exe "$(FULL_CURRENT_PATH)"を使用していました。
今、cmdウィンドウを開いたままにするcmd /k c:\Python27\python.exe "$(FULL_CURRENT_PATH)"を使用しています。

5
Matej

Python 3で

input('Press Enter to Exit...')

トリックを行います。

4
Amila

デスクトップショートカットからスクリプトを実行する場合は、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"
2
Paul Stevens

ウィンドウを開いたままにするために、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)

2
Mr Whybull

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とプログラムのフルディレクトリを入力します。

1
user3836103

非常に遅れた答えですが、次を含むpythonbat.batというWindowsバッチファイルを作成しました。

python.exe %1
@echo off
echo.
pause

そして、pythonbat.batファイルのデフォルトハンドラとして.pyを指定しました。

ファイルエクスプローラーで.pyファイルをダブルクリックすると、新しいコンソールウィンドウが開き、Pythonスクリプトが実行され、任意のキーを押すまで一時停止(開いたまま)されます...

Pythonスクリプトを変更する必要はありません。

コンソールウィンドウを開いて、python myscript.pyを指定することもできます。

(@maurizioがすでにこの正確な答えを投稿していることに気付いた)

0
roryhewitt

PowerShellを開いて「python」と入力できます。 Pythonがインポートされた後、ソースコードをコピーしてお気に入りのテキストエディターから貼り付け、コードを実行できます。

ウィンドウは閉じません。