วิธีทำให้หน้าต่างเอาต์พุตของสคริปต์ Python เปิดอยู่?


193

ฉันเพิ่งเริ่มต้นกับ Python เมื่อฉันรันไฟล์สคริปต์หลามบน Windows หน้าต่างผลลัพธ์จะปรากฏขึ้น แต่จะหายไปทันที ฉันต้องการมันอยู่ที่นั่นเพื่อที่ฉันจะสามารถวิเคราะห์ผลลัพธ์ของฉันได้ ฉันจะเปิดมันได้อย่างไร


6
A ล่าช้า 1,000 ฉันใช้ python เป็นภาษาการสอนสำหรับเพื่อนที่ใช้ Windows และฉันไม่อยากจะเชื่อเลยว่ามันเป็นปัญหามากน้อยเพียงใด (อย่างน้อยตามเอกสารที่มีอยู่) ไปยังจุดที่เราสามารถเรียกใช้สคริปต์และดูผลลัพธ์ได้
Cascabel

2
เพียงแค่ลาก / วางสคริปต์ของคุณลงในหน้าต่างคำสั่ง
JinSnow

คุณจะคิดว่าหน้าต่างเอาต์พุตควรเปิดอยู่ตามค่าเริ่มต้น มันทำงานเมื่อใช้ Python ใน Mac OS น่าผิดหวังมาก
Fandango68

ฉันจะเชื่อมโยงคำถามอื่นให้ Windows คอนโซลเปิดหลังจากข้อผิดพลาดหลามไปนี้ (ซึ่งผมได้โพสต์คำตอบสำหรับการแก้จุดบกพร่องด้วยการลากและวางสคริปต์หลาม.)
akinuri

ดูคำตอบที่ @maurizio โพสต์ด้านล่าง - เป็นคำเดียวที่ไม่ต้องการให้คุณเปลี่ยนสคริปต์ของหลาม
roryhewitt

คำตอบ:


157

คุณมีตัวเลือกน้อย:

  1. เรียกใช้โปรแกรมจากเทอร์มินัลที่เปิดอยู่แล้ว เปิดพรอมต์คำสั่งและพิมพ์:

    python myscript.py

    เพื่อให้ใช้งานได้คุณต้องมีไฟล์ python ที่สามารถใช้งานได้ในพา ธ ของคุณ เพียงตรวจสอบวิธีการแก้ไขตัวแปรสภาพแวดล้อมบน Windows และเพิ่มC:\PYTHON26(หรือไดเรกทอรีใดก็ตามที่คุณติดตั้ง python ไว้)

    เมื่อโปรแกรมสิ้นสุดลงโปรแกรมจะนำคุณกลับสู่พรอมต์คำสั่ง cmdแทนการปิดหน้าต่าง

  2. เพิ่มรหัสเพื่อรอที่ท้ายสคริปต์ของคุณ สำหรับ Python2 เพิ่ม ...

    raw_input()

    ... ในตอนท้ายของสคริปต์ทำให้รอEnterรหัส วิธีการนั้นน่ารำคาญเพราะคุณต้องแก้ไขสคริปต์และต้องจำเอาไว้เมื่อคุณทำเสร็จแล้ว น่ารำคาญเป็นพิเศษเมื่อทดสอบสคริปต์ของคนอื่น สำหรับ Python3 input()ใช้

  3. ใช้โปรแกรมแก้ไขที่หยุดให้คุณ บรรณาธิการบางคนที่เตรียมไว้สำหรับไพ ธ อนจะหยุดคุณโดยอัตโนมัติหลังจากการดำเนินการ บรรณาธิการอื่น ๆ อนุญาตให้คุณกำหนดค่าบรรทัดคำสั่งที่ใช้ในการเรียกใช้โปรแกรมของคุณ ฉันพบว่ามีประโยชน์อย่างยิ่งในการกำหนดค่าเป็น " python -i myscript.py" เมื่อทำงาน สิ่งนั้นจะนำคุณไปสู่ ​​python shell หลังจากสิ้นสุดโปรแกรมโดยที่สภาพแวดล้อมของโปรแกรมถูกโหลดดังนั้นคุณอาจเล่นกับตัวแปรและฟังก์ชั่นการโทรและวิธีการเพิ่มเติม


8
+1 ถึงรายการที่ 3 ฉันใช้ Scite เป็นเครื่องมือแก้ไข Python ของฉันและมันก็เก็บเอาท์พุทไว้ในหน้าต่างผลลัพธ์ของมัน สิ่งนี้มีประโยชน์จริง ๆ เพราะคุณสามารถเห็นผลลัพธ์ของการรันมากกว่าหนึ่งครั้งในหน้าต่างเดียว
Joris Timmermans

ฉันสามารถดูผลลัพธ์โดยเรียกใช้จากเทอร์มินัลเปิดแล้ว แต่ฉันต้องให้ที่อยู่สคริปต์ที่สมบูรณ์ในคำสั่งหลาม? ที่สามารถหลีกเลี่ยงได้? เมื่อฉันใช้เมธอด raw_input () จะให้ NameError: ชื่อ 'raw_input'is ไม่ได้กำหนดไว้ คุณสามารถแนะนำบรรณาธิการที่หยุดโดยอัตโนมัติหลังจากการดำเนินการ?
rohitmishra

1
@movingahead: บางทีคุณใช้ python 3 อยู่ล่ะ? ใน python 3 มันถูกเปลี่ยนชื่อเป็น input () แต่ตอนนี้ฉันจะใช้ python 2.6 เนื่องจาก python 3 ไม่มีไลบรารี่ของบุคคลที่สามที่สำคัญที่ยังไม่ได้รับการย้ายพอร์ต (ดูคำถามอื่น ๆ ใน python 2vs3) เกี่ยวกับโปรแกรมแก้ไขฉันไม่ใช้ windows แผ่นจดบันทึก ++ ให้คุณกำหนดค่าคำสั่ง ฉันใช้ emacs ซึ่งมีรุ่น windows แต่ฉันไม่เคยใช้
nosklo

@nosklo ขอบคุณ !! ย่ะฉันใช้ Python 3 ทำสิ่งพื้นฐานตอนนี้ไม่ควรเป็นปัญหามาก ฉันจะลองแผ่นจดบันทึก ++ ขณะนี้ฉันกำลังทดลอง Pydev สำหรับ Eclipse
rohitmishra

@movingahead ฉันใช้สตูดิโอ Aptana (pydev ก่อนบรรจุ) มันดีจริงๆ ไม่มีอะไรจะพูด.
v.oddou

52

cmd /kเป็นวิธีทั่วไปในการเปิดแอปพลิเคชันคอนโซลใด ๆ (ไม่เพียง แต่ Python) ด้วยหน้าต่างคอนโซลที่จะยังคงอยู่หลังจากที่แอปพลิเคชันปิด วิธีที่ง่ายที่สุดที่ฉันสามารถทำได้คือกด Win + R พิมพ์cmd /kแล้วลากและวางสคริปต์ที่คุณต้องการในกล่องโต้ตอบ Run


3
คำตอบที่ยอดเยี่ยม คุณควรได้รับสิ่งนี้
Jagu

1
เพียงแค่ fyi สำหรับคำสั่ง python os.system คุณต้องทำ os.system ("cmd / k" + myAppPath + "" + myFlagsString)
Jay

1
cmd /kเป็น Windows เท่านั้น ฉันไม่สามารถช่วยด้วยทางเลือก Mac ขออภัย
tzot

คุณต้องลากสคริปต์รวมถึงคำสั่ง Python เองหรือไม่ ขออภัยฉันมีตัวอย่างได้ไหม ฉันใหม่ใหม่มากสำหรับ Python ใน windows
Fandango68

1
คำตอบนี้ตรงไปตรงมาที่สุดและทำสิ่งที่ฉันต้องการในสภาพแวดล้อม windows เมื่อโปรแกรมทำงานหน้าต่างเทอร์มินัลจะยังคงเปิดอยู่
CameronAtkinson

41

เริ่มสคริปต์จากหน้าต่าง cmd ที่เปิดอยู่หรือท้ายสคริปต์เพิ่มสิ่งนี้ใน Python 2:

 raw_input("Press enter to exit ;)")

หรือใน Python 3:

input("Press enter to exit ;)")

1
"คีย์ใด ๆ " ไม่สามารถใช้งานได้เพียง Enter จะ (หรือ Ctrl + D ขึ้นอยู่กับว่าเราอยู่ที่ไหน)
Daniel Andersson

1
@DanielAndersson yep, ได้เปลี่ยนข้อความ
Anurag Uniyal

55
หากคุณคิดเกี่ยวกับมันมันเป็นชนิดที่ลึกเพียง "ป้อน" จะช่วยให้คุณ "ทางออก" ...
Joel B

โปรดทราบว่าเครื่องจะปิดตัวลงโดยไม่คำนึงถึงหากมีข้อยกเว้นเกิดขึ้น
johnson

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

15

คุณสามารถรวมคำตอบก่อนหน้านี้: (สำหรับผู้ใช้ Notepad ++)

กด F5 เพื่อเรียกใช้สคริปต์ปัจจุบันและพิมพ์คำสั่ง:

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

ด้วยวิธีนี้คุณจะยังคงอยู่ในโหมดอินเทอร์แอคทีฟหลังจากรันสคริปต์ Notepad ++ python ของคุณและคุณสามารถเล่นกับตัวแปรของคุณเป็นต้น :)


สิ่งนี้ทำให้เป็นชุดไฟล์ Windows ที่ยอดเยี่ยมหากคุณเปลี่ยน $ (FULL_CURRENT_PATH) เป็นชื่อพา ธ Windows
Noumenon

ฉันพบว่ามันง่ายกว่ามากที่จะได้รับปลั๊กอิน PyNPP และกำหนดทางลัดเพื่อเรียกใช้ (อย่าลืมปิดการใช้งานทางลัด F5 ก่อนหน้านี้)
JinSnow

11

สร้างไฟล์แบตช์ Windows ด้วย 2 บรรทัดเหล่านี้:

python your-program.py

pause

2
หรือimport os os.system("pause")ในตอนท้ายของ.pyไฟล์
Spikatrix

4
นี่เป็นคำตอบเดียวที่นี่ที่ถูกต้องจากระยะไกล คำตอบที่ต้องทำให้เสียหายทุก ๆ สคริปต์ Python ที่คุณจะเรียกใช้ด้วยraw_inputหรือขยะอื่น ๆ นั้นผิดปกติ พิมพ์คำสั่งของคุณในบรรทัดคำสั่งทางงูใหญ่คาดหวังให้คุณหรือใช้ภาษาชุดที่ได้รับให้กับ MS-DOS สำหรับตรงจุดประสงค์นี้ตั้งแต่สิงหาคม 1981
Kevin J. Chase

1
ยิ่งไปกว่านั้นให้ใช้python %*และตั้งค่าเป็นหนึ่งในโปรแกรม "เปิดด้วย" เพื่อให้คุณสามารถคลิกขวาที่ไฟล์. py เพื่อเปิดหน้าต่างหยุดชั่วคราวหรือฉันวางไว้ในโฟลเดอร์ Anaconda3 (ใน PATH) เป็น py_pause.bat ดังนั้นตอนนี้ ฉันสามารถเรียกใช้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คุณสามารถหยุดโปรแกรมชั่วคราวเมื่อออกจากโปรแกรม หากข้อผิดพลาด / ข้อยกเว้นเป็นสาเหตุของการออกมันจะหยุดชั่วคราวหลังจากพิมพ์ stacktrace

import atexit

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

ในโปรแกรมของฉันฉันโทรไปatexit.registerที่exceptข้อเพื่อที่จะหยุดหากมีอะไรผิดพลาด

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
คุณอาจต้องการเพิ่ม "; C: \ Python27" ที่ส่วนท้ายของตัวแปรสภาพแวดล้อม Path ของคุณ ด้วยวิธีนี้สามารถย่อให้เหลือ 'cmd / k python -i "$ (FULL_CURRENT_PATH)"' - สิ่งที่คำตอบข้างต้นพูดพร้อมกับประโยชน์ -i
Enigma


2

เมื่อต้องการเปิดหน้าต่างไว้ฉันเห็นด้วยกับ Anurag และนี่คือสิ่งที่ฉันทำเพื่อเปิดหน้าต่างของฉันไว้สำหรับโปรแกรมประเภทการคำนวณสั้น ๆ

นี่จะแสดงเคอร์เซอร์โดยไม่มีข้อความ:

raw_input() 

ตัวอย่างต่อไปนี้จะให้ข้อความที่ชัดเจนว่าโปรแกรมเสร็จแล้วและไม่รอการแจ้งเตือนอินพุตอื่นภายในโปรแกรม:

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

บันทึก!
(1) ในหลาม 3 ไม่มีraw_input ()เพียง ป้อนข้อมูล ()
(2) ใช้เครื่องหมายคำพูดเดี่ยวเพื่อระบุสตริง ไม่เช่นนั้นหากคุณพิมพ์คู่รอบ ๆ สิ่งใดก็ตามเช่น "raw_input ()" มันจะคิดว่ามันเป็นฟังก์ชั่นตัวแปร ฯลฯ และไม่ใช่ข้อความ

ในตัวอย่างถัดไปนี้ฉันใช้เครื่องหมายคำพูดคู่และจะไม่ทำงานเพราะคิดว่ามีการแบ่งคำพูดระหว่าง "the" และ "ฟังก์ชั่น" แม้ว่าคุณจะอ่านมันจิตใจของคุณเองก็สามารถเข้าใจได้อย่างสมบูรณ์:

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

หวังว่านี่จะช่วยให้คนอื่น ๆ ที่อาจจะเริ่มต้นและยังไม่ได้คิดว่าคอมพิวเตอร์คิดยังไง อาจใช้เวลาสักครู่ : o)


2

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"

ขอบคุณ! สิ่งนี้ช่วยฉันได้มากจริงๆ ฉันเป็นผู้ใช้ Linux และไม่สามารถเข้าใจได้
Michael Bruce

1

นอกเหนือจากinputและraw_inputคุณยังสามารถใช้whileวงวนไม่สิ้นสุดเช่นนี้ while True: pass(Python 2.5 + / 3) หรือwhile 1: pass(Python 2/3 ทุกรุ่น) สิ่งนี้อาจใช้พลังงานในการคำนวณ

คุณสามารถเรียกใช้โปรแกรมจากบรรทัดคำสั่ง พิมพ์pythonลงในบรรทัดคำสั่ง (Mac OS X ของ Terminal) และมันควรจะพูดว่าPython 3.?.?(รุ่นหลามของคุณ) มันจะไม่แสดงรุ่นหลามของคุณหรือว่าpython: command not foundมองเข้าไปเปลี่ยนค่า PATH (ค่า enviromentl C:\(Python folder\python.exeที่ระบุไว้ข้างต้น) หากประสบความสำเร็จให้พิมพ์pythonหรือC:\(Python installation)\python.exeและไดเรกทอรีทั้งหมดของโปรแกรมของคุณ


2
นี่เหมือนกับการออกจากรถของคุณทำงานในขณะที่คุณไปดื่มกาแฟหรือนอนหลับ! อันตรายในหลาย ๆ ระดับ
Fandango68

1

คำตอบที่ล่าช้ามาก แต่ฉันสร้างไฟล์ Windows Batch pythonbat.batที่มีคำสั่งต่อไปนี้:

python.exe %1
@echo off
echo.
pause

จากนั้นระบุpythonbat.batว่าเป็นตัวจัดการเริ่มต้นสำหรับ.pyไฟล์

ตอนนี้เมื่อฉันดับเบิลคลิก.pyไฟล์ใน File Explorer มันจะเปิดหน้าต่างคอนโซลใหม่รันสคริปต์ Python แล้วหยุดชั่วคราว (ยังคงเปิดอยู่) จนกว่าฉันจะกดปุ่มใด ๆ ...

ไม่จำเป็นต้องเปลี่ยนแปลงสคริปต์ Python ใด ๆ

ฉันยังสามารถเปิดหน้าต่างคอนโซลและระบุpython myscript.pyว่าฉันต้องการ ...

(ฉันเพิ่งสังเกตเห็น @maurizio ได้โพสต์คำตอบที่ถูกต้องนี้แล้ว)


0

หากคุณต้องการเปิดหน้าต่าง cmd และอยู่ในไดเรกทอรีกำลังเรียกใช้งานไฟล์นี้จะทำงานที่ Windows 10:

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

0

ฉันพบทางออกของสภาพแวดล้อม py3 ของฉันที่ win10 เพียงแค่เรียกใช้ cmd หรือ powershell ในฐานะผู้ดูแลระบบและผลลัพธ์จะอยู่ที่หน้าต่างคอนโซลเดียวกันผู้ใช้ประเภทใด ๆ ที่รันคำสั่ง python จะทำให้หลามเปิดหน้าต่างคอนโซลใหม่


0

คุณสามารถเขียนได้

input()

ในตอนท้ายของรหัสของคุณ

ดังนั้นเมื่อคุณเรียกใช้สคริปต์มันจะรอให้คุณป้อนบางอย่าง

{ENTER for example}

-1

คุณสามารถเปิด PowerShell และพิมพ์ "python" หลังจากนำเข้า Python คุณสามารถคัดลอกวางซอร์สโค้ดจาก text-editor ที่คุณชื่นชอบเพื่อรันโค้ด

หน้าต่างจะไม่ปิด


-2
  1. ไปที่นี่และดาวน์โหลดและติดตั้ง Notepad ++
  2. ไปที่นี่และดาวน์โหลดและติดตั้ง Python 2.7 ไม่ใช่ 3
  3. เริ่มเรียกใช้ Powershell ป้อนต่อไปนี้. [Environment]::SetEnvironmentVariable("Path", "$env:Path;C:\Python27", "User")
  4. ปิด PowerShell แล้วเปิดใหม่
  5. สร้างไดเรกทอรีสำหรับโปรแกรมของคุณ สคริปต์ mkdir
  6. เปิดสคริปต์ซีดีของไดเรกทอรีนั้น
  7. ใน Notepad ++ ในรูปแบบไฟล์ใหม่: print "hello world"
  8. บันทึกไฟล์เป็น hello.py
  9. กลับไปที่ powershell และตรวจสอบว่าคุณอยู่ในไดเรกทอรีที่ถูกต้องโดยพิมพ์ dir คุณควรเห็นไฟล์ hello.py ที่นั่น
  10. ที่พรอมต์ของ PowerShell ให้พิมพ์: python hello.py

-2

แฮ็คที่เรียบง่ายเพื่อเปิดหน้าต่าง:

counter = 0

While (True):

    If (counter == 0):

        # Code goes here

    counter += 1

ตัวนับเป็นรหัสเพื่อไม่ให้ซ้ำตัวเอง


-2

วิธีที่ง่ายที่สุด:

import time

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

การทำเช่นนี้จะทำให้โค้ดไม่ทำงานเป็นเวลา 1 นาทีจากนั้นจึงปิด


1
คุณกล้าอย่างจริงจังแค่ไหน ไม่จำเป็นดังนั้น นั่นไม่ใช่สิ่งที่คำถามนี้เกี่ยวกับและคุณรู้
Redgar Tech

-3

บน windows 10 ส่วนแทรกที่ขอร้องสิ่งนี้:

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

แปลก แต่มันก็ใช้ได้ผลสำหรับฉัน! (พร้อมกับอินพุต () ในตอนท้ายแน่นอน)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.