2009-06-16 75 views
133

我剛剛開始使用Python。當我在Windows上執行python腳本文件時,輸出窗口出現,但瞬間消失。我需要它留在那裏,以便我可以分析我的輸出。我怎樣才能保持它的開放?如何保持Python腳本輸出窗口打開?

+3

遲到+1000。我使用python作爲使用Windows的朋友的教學語言,我無法相信這是多少麻煩(至少根據現有的文檔)到達我們可以運行腳本並查看輸出的位置。 – Cascabel 2011-07-23 18:08:56

+1

只需將腳本拖放到cmd窗口 – JinSnow 2017-02-10 12:23:37

+0

您會認爲輸出窗口應該保持默認打開狀態。它在Mac OS中運行Python時會執行此操作。非常令人沮喪的 – Fandango68 2017-11-30 06:45:09

回答

119

你有幾個選項:

  1. 從已經打開的終端運行程序。打開命令提示符並鍵入:

    python myscript.py 
    

    爲了這樣工作,您需要在您的路徑中使用python可執行文件。只需在Windows上檢查how to edit environment variables,然後添加C:\PYTHON26(或安裝python的任何目錄)。

    當程序結束時,它會讓你回到cmd提示符而不是關閉窗口。

  2. 添加代碼以在腳本結尾等待。對於Python2,加入...

    raw_input() 
    

    ...在腳本的結束使得等待輸入鍵。該方法令人討厭,因爲您必須修改腳本,並且必須記住在完成時將其刪除。測試其他人的腳本時特別惱人。對於Python3,請使用input()

  3. 使用一個爲你暫停的編輯器。準備好的一些編輯器會在執行後自動暫停。其他編輯器允許您配置它用來運行程序的命令行。運行時將其配置爲「python -i myscript.py」特別有用。這會在程序結束後將程序環境加載到一個python shell中,因此您可以進一步使用變量和調用函數和方法。

+7

+1項目3.我使用Scite作爲我的Python編輯器,它只需將輸出保留在其自己的輸出窗口中。這非常有用,因爲您可以在單個窗口中看到多次運行的輸出。 – 2009-06-16 12:14:59

+0

我能夠通過從已經打開的終端運行它來看到輸出。但我需要在python命令中提供完整的腳本地址?這可以避免嗎? 當我使用raw_input()方法時,它給了我 NameError:name'raw_input'沒有被定義。 你能推薦一個編輯器,它會在執行後自動暫停嗎? – rohitmishra 2009-06-16 12:20:28

+1

@movingahead:也許你正在使用python 3?在python 3中,它被重命名爲input()。但是現在我會使用python 2.6,因爲python 3缺少尚未移植的重要第三方庫。 (請參閱python 2vs3上的其他問題)。關於編輯器,我不使用Windows,使用記事本++可以配置命令。我使用具有Windows版本的emacs,但我從來沒有使用它。 – nosklo 2009-06-16 13:30:35

26

啓動腳本已經打開cmd窗口或 在腳本的末尾添加這樣的事情,在Python 2:

raw_input("Press enter to exit ;)") 

或者,在Python 3:

input("Press enter to exit ;)") 
+1

「任何鍵」都不起作用,只有按Enter鍵(或按Ctrl + D,取決於我們的位置)。 – 2013-11-02 18:01:05

+0

@DanielAndersson是的,改變了文字 – 2013-11-03 23:17:59

+31

如果你仔細想想,只有「進入」才能讓你「退出」...... – 2013-11-05 23:54:10

37

cmd /k是打開一個控制檯窗口的應用程序關閉後,將保留所有控制檯應用程序(不僅僅是Python)的典型方式。我認爲最簡單的方法是按Win + R,鍵入cmd /k,然後拖動&將您想要的腳本拖放到運行對話框。

5

我有類似的問題。使用Notepad ++,我曾經使用命令:C:\Python27\python.exe "$(FULL_CURRENT_PATH)",在代碼終止後立即關閉了cmd窗口。
現在我正在使用cmd /k c:\Python27\python.exe "$(FULL_CURRENT_PATH)",它保持cmd窗口打開。

12

你可以前的答案組合:(記事本++用戶)

按F5運行當前的腳本,並輸入命令:在這種方式

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

你留在交互模式下執行你的記事本+ +後Python腳本,你能玩的的變量等等:)

-1
  1. 轉到here並下載和安裝記事本++
  2. 轉到here並下載並安裝Python 2.7不是3.
  3. 啓動Run Powershell。輸入以下內容。 [Environment]::SetEnvironmentVariable("Path", "$env:Path;C:\Python27", "User")
  4. 關閉Powershell並重新打開它。
  5. 爲您的程序製作一個目錄。 MKDIR腳本
  6. 打開該目錄cd腳本
  7. 在記事本++,在一個新的文件類型:print "hello world"
  8. 將文件保存爲hello.py
  9. 回到PowerShell和確保你是在正確的目錄中鍵入dir。你應該在那裏看到你的文件hello.py。
  10. 在PowerShell提示符下鍵入:python hello.py
2

只保留窗口打開我阿努拉格同意,這是我做過什麼讓我開窗短小的計算類型節目。

這將只顯示沒有文本光標:

raw_input() 

下一個例子會給你一個明確的信息,在程序完成,在程序中沒有等待另一個輸入提示:

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

Note!
(1) In python 3, there is no raw_input(), just input().
(2) Use single quotes to indicate a string; otherwise if you type doubles around anything, such as "raw_input()", it will think it is a function, variable, etc, and not text.

在下面這個例子中,我我們Ë雙引號和它不會工作,因爲它認爲有介於兩者之間的引號休息「的」和「功能」,即使當你讀它,你自己的心靈可以利用它完美的意義:

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

希望這可以幫助其他人可能開始,但仍然沒有弄清楚計算機如何認爲。這可能需要一段時間。:O)

16

爲了保持你的窗戶開着異常的情況下(但,在打印過程中使用https://stackoverflow.com/a/3702726/2436175

if __name__ == '__main__': 
    try: 
     ## your code, typically one function call 
    except: 
     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: 
     import sys 
     print sys.exc_info()[0] 
     import traceback 
     print traceback.format_exc() 
    finally: 
     print "Press Enter to continue ..." 
     raw_input() 
6

創建具有以下2行的Windows批處理文件:

python your-program.py 

pause 
1

除了inputraw_input,您也可以使用無限循環while,如下所示: while True: pass(Python 2.5 +/3)或while 1: pass(所有版本的Python 2/3)。不過,這可能會使用計算能力。

您也可以從命令行運行該程序。鍵入python到命令行(Mac OS X Terminal),它應該說Python 3.?.?(您的Python版本)它不顯示您的Python版本,或者說python: command not found,查看正在更改的PATH值(環境值,上面列出的)/類型C:\(Python folder\python.exe 。如果成功,請鍵入pythonC:\(Python installation)\python.exe完整目錄您的程序。

6

在Python 2可以用做:的raw_input()

>>print("Hello World!")  
>>raw_input('Waiting a key...') 

在Python 3可以用做:輸入()

>>print("Hello world!")  
>>input('Waiting a key...') 

另外,還可以用做time.sleep(時間)

>>import time 
>>print("The program will close in 5 seconds") 
>>time.sleep(5) 
5

使用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. 
-2

在窗口10插入在beggining這樣的:

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

奇怪,但它爲我工作(與輸入()在最後一起,當然)

1

如果你想!要從桌面快捷方式運行腳本,請右鍵單擊您的python文件並選擇Send to|Desktop (create shortcut)。然後右鍵單擊該快捷方式並選擇屬性。在快捷方式選項卡上選擇目標:文本框,並在路徑前添加cmd /k,然後單擊確定。該快捷方式現在應該不關閉運行腳本,你不需要input('Hit enter to close')

注意,如果你有蟒蛇的多個版本的機器上,添加CMD/k和之間所需的蟒蛇可執行文件的名稱scipt路徑是這樣的:

cmd /k python3 "C:\Users\<yourname>\Documents\your_scipt.py" 
相關問題