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


191

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


6
遅れて+1000。私はWindowsを使用する友人の教育言語としてpythonを使用していますが、スクリプトを実行して出力を確認できる場所に(少なくとも既存のドキュメントに基づいて)どれほどの問題があるかは信じられませんでした。
Cascabel 2011

2
スクリプトを
コマンド

デフォルトでは、出力ウィンドウを開いたままにしておく必要があります。Mac OSでPythonを実行しているときに実行されます。非常にイライラする
Fandango68

私は別の質問がリンクするつもりPythonのエラーの後に開いているWindowsコンソールをしてください、この1に(私はドラッグ&ドロップPythonスクリプトをデバッグするための答えを掲載しました。)
akinuri

@maurizioが以下に投稿した回答を参照してください-Pythonスクリプトを変更する必要がないのは、これだけです。
roryhewitt

回答:


156

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

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

    python myscript.py

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

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

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

    raw_input()

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

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


8
アイテム1に+1します。PythonエディターとしてSciteを使用し、出力を独自の出力ウィンドウに保持します。1つのウィンドウに複数の実行の出力が表示される可能性があるため、これは非常に便利です。
Joris Timmermans、

すでに開いているターミナルから実行すると、出力を確認できます。しかし、pythonコマンドで完全なスクリプトアドレスを指定する必要がありますか?それは回避できますか?raw_input()メソッドを使用すると、NameError:name 'raw_input' is not defined。実行後に自動的に一時停止するエディターを提案できますか?
rohitmishra 2009年

1
@movingahead:多分あなたはpython 3を使っていますか?Python 3では、名前がinput()に変更されました。しかし、私は今のところpython 2.6を使用します。それは、python 3にはまだ移植されていない重要なサードパーティのライブラリがないためです。(python 2vs3に関する他の質問を参照してください)。エディターについては、私はWindowsを使用していません。notepad++では、コマンドを構成できます。Windows版のemacsを使用していますが、使用していません。
nosklo 2009年

@noskloありがとう!! ええ、私はPython 3を使用しています。今は基本的なことをしているので、それほど問題にはなりません。notepad ++を試します。現在、EclipseのPydevを試しています
rohitmishra

@movingahead Aptana studioを使用しています。(パッケージ化されたpydev)。本当に良いです。言うべきことがない。
v.oddou 2015年

51

cmd /kアプリケーションを閉じた後も残るコンソールウィンドウで任意のコンソールアプリケーション(Pythonだけでなく)を開く一般的な方法です。これを行うには、Win + Rを押して入力しcmd /k、必要なスクリプトを[実行]ダイアログにドラッグアンドドロップするのが最も簡単だと思います。


3
素晴らしい答え。あなたはこれを持っていたはずです。
Jagu、2011年

1
python os.systemコマンドの場合はfyiを実行するだけで、os.system( "cmd / k" + myAppPath + "" + myFlagsString)
Jay

1
cmd /kWindowsのみです。申し訳ありませんが、Macの代替案についてはサポートできません。
tzot

Pythonコマンド自体を含め、スクリプトをドラッグする必要がありますか?申し訳ありませんが、例がありますか?私はWindowsでPythonを使用するのが初めてです。
Fandango68

1
この答えは最も簡単で、Windows環境で必要なことを正確に実行します。プログラムが実行されると、ターミナルウィンドウは開いたままになります。
CameronAtkinson

39

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

 raw_input("Press enter to exit ;)")

または、Python 3の場合:

input("Press enter to exit ;)")

1
「任意のキー」は機能せず、Enterキーのみ(またはCtrl + D、場所によって異なります)のみ機能します。
Daniel Andersson

1
@DanielAnderssonはい、テキストを変更しました
Anurag Uniyal 2013年

54
考えてみれば、「エンター」だけで「エグジット」できるというのはちょっと奥深い…
Joel B

19

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

Python 2

if __name__ == '__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 __name__ == '__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 __name__ == '__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 __name__ == '__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()

14

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

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

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

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


これは、$(FULL_CURRENT_PATH)をWindowsパス名に変更した場合、優れたWindowsバッチファイルになります。
Noumenon

プラグインPyNPPを取得し、それを実行するショートカットを割り当てる方がはるかに簡単であることがわかりました(前のF5ショートカットを無効にすることを忘れないでください)
JinSnow

11

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

python your-program.py

pause

2
またはimport os os.system("pause").pyファイルの最後
Spikatrix '25年

4
これは、ここでもリモートで正しい唯一の答えです。これまでに実行するすべてのPythonスクリプトraw_inputや他のゴミを破壊する必要がある回答は、単に間違っています。Pythonが期待する方法でコマンドラインにコマンドを入力するか、1981年8月以降、まさにこの目的のため MS-DOSで提供されているバッチ言語を使用します。
Kevin J. Chase

1
さらにpython %*、「開く」プログラムの1つとして使用および設定して、.pyファイルを右クリックして一時停止ウィンドウを開くか、またはpy_pause.batとして(PATHの)Anaconda3フォルダーに配置することもできます。私py_pause my-prog.py all my argsはcmd行から実行できます
brian

7

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)

7

を使用するatexitと、プログラムが終了した直後に一時停止できます。エラー/例外が終了の理由である場合、スタックトレースの出力後に一時停止します。

import atexit

# Python 2 should use `raw_input` instead of `input`
atexit.register(input, 'Press Enter to continue...')

私のプログラムでは、私が呼び出しを置くatexit.registerexcept何かが間違っていた場合にのみ一時停止するように、句。

if __name__ == "__main__":
    try:
        something_that_may_fail()

    except:
        # Register the pause.
        import atexit
        atexit.register(input, 'Press Enter to continue...')

        raise # Reraise the exception.

5

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


1
Path環境変数の最後に「; C:\ Python27」を追加することもできます。こうすることで、「cmd / k python -i "$(FULL_CURRENT_PATH)"」に短縮できます-上記の答えに正確に加えて、有用な-iです。
エニグマ

5

Python 3の場合

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

トリックを行います。


2

ウィンドウを開いたままにするために、私はアヌラーグに同意します。これは、短い計算タイプのプログラムでウィンドウを開いたままにするために行ったものです。

これは単にテキストのないカーソルを表示します:

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()」などの周りにダブルを入力すると、テキストではなく、関数、変数などと見なされます。

この次の例では、私は二重引用符を使用して、それはないだろう、それはあなたがそれを読んだときに、自分の心がそれの完璧な感覚を作ることができるにもかかわらず、「」と「機能」の間、引用符で切れ目がある仕事を考えているので:

print("You have reached the end and the "input()" function is keeping the window open")
input()

うまくいけば、これは、コンピュータがまだどのように考えているのかを理解できていない、まだ始まっているかもしれない他の人を助けるでしょう。しばらく時間がかかる場合があります。:o)


2

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

ありがとう!これは実際に私を大いに助けました。私はLinuxユーザーで、これを理解できませんでした。
マイケルブルース

1

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、PATH値(上記enviromentl値を、)変更/タイプを調べますC:\(Python folder\python.exe。それが成功した場合は、入力するpythonか、C:\(Python installation)\python.exeそして完全なディレクトリあなたのプログラムの。


1
これは、コーヒーを飲んだり寝たりする間、車を走らせたままにするようなものです。多くのレベルで危険
Fandango68

1

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

python.exe %1
@echo off
echo.
pause

次にpythonbat.bat、デフォルトのハンドラとして指定されています.pyファイルます。

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

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

コンソールウィンドウを開いて指定できます python myscript.py応じてでき ...

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


0

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

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


0

cmd-windowを開いたままにして、running-fileディレクトリに入れたい場合は、これはWindows 10で機能します。

cmd /k cd /d $(CURRENT_DIRECTORY) && python $(FULL_CURRENT_PATH)

0

win10のpy3環境での解決策は、管理者としてcmdまたはpowershellを実行するだけであり、出力は同じコンソールウィンドウに残ります。他のタイプのユーザーがpythonコマンドを実行すると、pythonによって新しいコンソールウィンドウが開かれます。


-1
  1. ここに移動し Notepad ++をダウンロードしてインストールします
  2. ここに行き、3ではなくPython 2.7をダウンロードしてインストールします。
  3. Powershellを起動して実行します。次のように入力します。 [Environment]::SetEnvironmentVariable("Path", "$env:Path;C:\Python27", "User")
  4. Powershellを閉じて、再度開きます。
  5. プログラムのディレクトリを作成します。mkdirスクリプト
  6. そのディレクトリのcdスクリプトを開きます
  7. Notepad ++では、新しいファイルの種類: print "hello world"
  8. ファイルをhello.pyとして保存します
  9. powershellに戻り、dirと入力して、正しいディレクトリにいることを確認します。ファイルhello.pyが表示されます。
  10. Powershellプロンプトで次のように入力します。 python hello.py

-1

ウィンドウを開いたままにする簡単なハック:

counter = 0

While (True):

    If (counter == 0):

        # Code goes here

    counter += 1

カウンターは、コードが繰り返されないようにするためのものです。


-1

最も簡単な方法:

import time

#Your code here
time.sleep(60)
#end of code (and console shut down)

これにより、コードが1分間保持されてから閉じられます。


1
どれほど真剣にあなたに挑戦するか。不要です。それはこの質問が何であるかということではなく、あなたはそれを知っています。
Redgar Tech

-2

Windows 10では、これを始めるときに挿入します。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

奇妙ですが、私にとってはうまくいきます!(もちろん、最後にinput()と一緒に)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.