ฉันเพิ่งเริ่มต้นกับ Python เมื่อฉันรันไฟล์สคริปต์หลามบน Windows หน้าต่างผลลัพธ์จะปรากฏขึ้น แต่จะหายไปทันที ฉันต้องการมันอยู่ที่นั่นเพื่อที่ฉันจะสามารถวิเคราะห์ผลลัพธ์ของฉันได้ ฉันจะเปิดมันได้อย่างไร
ฉันเพิ่งเริ่มต้นกับ Python เมื่อฉันรันไฟล์สคริปต์หลามบน Windows หน้าต่างผลลัพธ์จะปรากฏขึ้น แต่จะหายไปทันที ฉันต้องการมันอยู่ที่นั่นเพื่อที่ฉันจะสามารถวิเคราะห์ผลลัพธ์ของฉันได้ ฉันจะเปิดมันได้อย่างไร
คำตอบ:
คุณมีตัวเลือกน้อย:
เรียกใช้โปรแกรมจากเทอร์มินัลที่เปิดอยู่แล้ว เปิดพรอมต์คำสั่งและพิมพ์:
python myscript.py
เพื่อให้ใช้งานได้คุณต้องมีไฟล์ python ที่สามารถใช้งานได้ในพา ธ ของคุณ เพียงตรวจสอบวิธีการแก้ไขตัวแปรสภาพแวดล้อมบน Windows และเพิ่มC:\PYTHON26
(หรือไดเรกทอรีใดก็ตามที่คุณติดตั้ง python ไว้)
เมื่อโปรแกรมสิ้นสุดลงโปรแกรมจะนำคุณกลับสู่พรอมต์คำสั่ง cmdแทนการปิดหน้าต่าง
เพิ่มรหัสเพื่อรอที่ท้ายสคริปต์ของคุณ สำหรับ Python2 เพิ่ม ...
raw_input()
... ในตอนท้ายของสคริปต์ทำให้รอEnterรหัส วิธีการนั้นน่ารำคาญเพราะคุณต้องแก้ไขสคริปต์และต้องจำเอาไว้เมื่อคุณทำเสร็จแล้ว น่ารำคาญเป็นพิเศษเมื่อทดสอบสคริปต์ของคนอื่น สำหรับ Python3 input()
ใช้
ใช้โปรแกรมแก้ไขที่หยุดให้คุณ บรรณาธิการบางคนที่เตรียมไว้สำหรับไพ ธ อนจะหยุดคุณโดยอัตโนมัติหลังจากการดำเนินการ บรรณาธิการอื่น ๆ อนุญาตให้คุณกำหนดค่าบรรทัดคำสั่งที่ใช้ในการเรียกใช้โปรแกรมของคุณ ฉันพบว่ามีประโยชน์อย่างยิ่งในการกำหนดค่าเป็น " python -i myscript.py
" เมื่อทำงาน สิ่งนั้นจะนำคุณไปสู่ python shell หลังจากสิ้นสุดโปรแกรมโดยที่สภาพแวดล้อมของโปรแกรมถูกโหลดดังนั้นคุณอาจเล่นกับตัวแปรและฟังก์ชั่นการโทรและวิธีการเพิ่มเติม
cmd /k
เป็นวิธีทั่วไปในการเปิดแอปพลิเคชันคอนโซลใด ๆ (ไม่เพียง แต่ Python) ด้วยหน้าต่างคอนโซลที่จะยังคงอยู่หลังจากที่แอปพลิเคชันปิด วิธีที่ง่ายที่สุดที่ฉันสามารถทำได้คือกด Win + R พิมพ์cmd /k
แล้วลากและวางสคริปต์ที่คุณต้องการในกล่องโต้ตอบ Run
cmd /k
เป็น Windows เท่านั้น ฉันไม่สามารถช่วยด้วยทางเลือก Mac ขออภัย
เริ่มสคริปต์จากหน้าต่าง cmd ที่เปิดอยู่หรือท้ายสคริปต์เพิ่มสิ่งนี้ใน Python 2:
raw_input("Press enter to exit ;)")
หรือใน Python 3:
input("Press enter to exit ;)")
เพื่อเปิดหน้าต่างของคุณในกรณีที่มีข้อยกเว้น (ยังในขณะที่พิมพ์ข้อยกเว้น)
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()
สำหรับ 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()
คุณสามารถรวมคำตอบก่อนหน้านี้: (สำหรับผู้ใช้ Notepad ++)
กด F5 เพื่อเรียกใช้สคริปต์ปัจจุบันและพิมพ์คำสั่ง:
cmd /k python -i "$(FULL_CURRENT_PATH)"
ด้วยวิธีนี้คุณจะยังคงอยู่ในโหมดอินเทอร์แอคทีฟหลังจากรันสคริปต์ Notepad ++ python ของคุณและคุณสามารถเล่นกับตัวแปรของคุณเป็นต้น :)
สร้างไฟล์แบตช์ Windows ด้วย 2 บรรทัดเหล่านี้:
python your-program.py
pause
import os os.system("pause")
ในตอนท้ายของ.py
ไฟล์
raw_input
หรือขยะอื่น ๆ นั้นผิดปกติ พิมพ์คำสั่งของคุณในบรรทัดคำสั่งทางงูใหญ่คาดหวังให้คุณหรือใช้ภาษาชุดที่ได้รับให้กับ MS-DOS สำหรับตรงจุดประสงค์นี้ตั้งแต่สิงหาคม 1981
python %*
และตั้งค่าเป็นหนึ่งในโปรแกรม "เปิดด้วย" เพื่อให้คุณสามารถคลิกขวาที่ไฟล์. py เพื่อเปิดหน้าต่างหยุดชั่วคราวหรือฉันวางไว้ในโฟลเดอร์ Anaconda3 (ใน PATH) เป็น py_pause.bat ดังนั้นตอนนี้ ฉันสามารถเรียกใช้py_pause my-prog.py all my args
จากบรรทัด cmd
ใน 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)
ใช้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.
ฉันมีปัญหาที่คล้ายกัน ด้วย Notepad ++ ฉันเคยใช้คำสั่ง: C:\Python27\python.exe "$(FULL_CURRENT_PATH)"
ซึ่งปิดหน้าต่าง cmd ทันทีหลังจากรหัสสิ้นสุดลง
ตอนนี้ฉันกำลังใช้cmd /k c:\Python27\python.exe "$(FULL_CURRENT_PATH)"
ซึ่งเปิดหน้าต่าง cmd อยู่
บน Python 3
input('Press Enter to Exit...')
จะทำเคล็ดลับ
เมื่อต้องการเปิดหน้าต่างไว้ฉันเห็นด้วยกับ 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)
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"
นอกเหนือจาก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
และไดเรกทอรีทั้งหมดของโปรแกรมของคุณ
คำตอบที่ล่าช้ามาก แต่ฉันสร้างไฟล์ Windows Batch pythonbat.bat
ที่มีคำสั่งต่อไปนี้:
python.exe %1
@echo off
echo.
pause
จากนั้นระบุpythonbat.bat
ว่าเป็นตัวจัดการเริ่มต้นสำหรับ.py
ไฟล์
ตอนนี้เมื่อฉันดับเบิลคลิก.py
ไฟล์ใน File Explorer มันจะเปิดหน้าต่างคอนโซลใหม่รันสคริปต์ Python แล้วหยุดชั่วคราว (ยังคงเปิดอยู่) จนกว่าฉันจะกดปุ่มใด ๆ ...
ไม่จำเป็นต้องเปลี่ยนแปลงสคริปต์ Python ใด ๆ
ฉันยังสามารถเปิดหน้าต่างคอนโซลและระบุpython myscript.py
ว่าฉันต้องการ ...
(ฉันเพิ่งสังเกตเห็น @maurizio ได้โพสต์คำตอบที่ถูกต้องนี้แล้ว)
หากคุณต้องการเปิดหน้าต่าง cmd และอยู่ในไดเรกทอรีกำลังเรียกใช้งานไฟล์นี้จะทำงานที่ Windows 10:
cmd /k cd /d $(CURRENT_DIRECTORY) && python $(FULL_CURRENT_PATH)
ฉันพบทางออกของสภาพแวดล้อม py3 ของฉันที่ win10 เพียงแค่เรียกใช้ cmd หรือ powershell ในฐานะผู้ดูแลระบบและผลลัพธ์จะอยู่ที่หน้าต่างคอนโซลเดียวกันผู้ใช้ประเภทใด ๆ ที่รันคำสั่ง python จะทำให้หลามเปิดหน้าต่างคอนโซลใหม่
คุณสามารถเขียนได้
input()
ในตอนท้ายของรหัสของคุณ
ดังนั้นเมื่อคุณเรียกใช้สคริปต์มันจะรอให้คุณป้อนบางอย่าง
{ENTER for example}
คุณสามารถเปิด PowerShell และพิมพ์ "python" หลังจากนำเข้า Python คุณสามารถคัดลอกวางซอร์สโค้ดจาก text-editor ที่คุณชื่นชอบเพื่อรันโค้ด
หน้าต่างจะไม่ปิด
[Environment]::SetEnvironmentVariable("Path", "$env:Path;C:\Python27", "User")
print "hello world"
python hello.py
แฮ็คที่เรียบง่ายเพื่อเปิดหน้าต่าง:
counter = 0
While (True):
If (counter == 0):
# Code goes here
counter += 1
ตัวนับเป็นรหัสเพื่อไม่ให้ซ้ำตัวเอง
วิธีที่ง่ายที่สุด:
import time
#Your code here
time.sleep(60)
#end of code (and console shut down)
การทำเช่นนี้จะทำให้โค้ดไม่ทำงานเป็นเวลา 1 นาทีจากนั้นจึงปิด
บน windows 10 ส่วนแทรกที่ขอร้องสิ่งนี้:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
แปลก แต่มันก็ใช้ได้ผลสำหรับฉัน! (พร้อมกับอินพุต () ในตอนท้ายแน่นอน)