Bagaimana cara menjaga jendela output skrip Python terbuka?

193

Saya baru saja mulai dengan Python. Ketika saya mengeksekusi file skrip python pada Windows, jendela output muncul tetapi seketika hilang. Saya membutuhkannya untuk tetap di sana sehingga saya dapat menganalisis output saya. Bagaimana saya bisa tetap buka?

rohitmishra
sumber
6
+1000 yang terlambat. Saya menggunakan python sebagai bahasa pengajaran untuk seorang teman yang menggunakan Windows, dan saya tidak bisa percaya betapa banyak kesulitannya (setidaknya berdasarkan pada dokumentasi yang ada) untuk sampai ke tempat kita dapat menjalankan skrip dan melihat hasilnya.
Cascabel
2
cukup seret / lepas skrip Anda ke jendela cmd
JinSnow
Anda akan berpikir jendela output harus tetap terbuka secara default. Itu ketika menjalankan Python di Mac OS. Sangat membuat frustrasi
Fandango68
Saya akan menautkan pertanyaan lain. Tetap Konsol Windows tetap terbuka setelah Kesalahan Python untuk yang satu ini (yang telah saya posting jawaban untuk debugging dengan drag & drop skrip python.)
akinuri
Lihat jawaban yang @maurizio diposting di bawah ini - itu satu-satunya yang tidak perlu Anda mengubah skrip python Anda.
roryhewitt

Jawaban:

157

Anda punya beberapa pilihan:

  1. Jalankan program dari terminal yang sudah terbuka. Buka prompt perintah dan ketik:

    python myscript.py

    Agar berhasil, Anda memerlukan python yang dapat dieksekusi di jalur Anda. Cukup periksa bagaimana cara mengedit variabel lingkungan pada Windows, dan tambahkan C:\PYTHON26(atau direktori apa pun yang Anda pasang python).

    Ketika program berakhir, ia akan menurunkan Anda kembali ke cmd prompt daripada menutup jendela.

  2. Tambahkan kode untuk menunggu di akhir skrip Anda. Untuk Python2, menambahkan ...

    raw_input()

    ... di akhir skrip membuatnya menunggu Enterkunci. Metode itu menjengkelkan karena Anda harus memodifikasi skrip, dan harus ingat menghapusnya ketika Anda selesai. Khususnya menjengkelkan saat menguji skrip orang lain. Untuk Python3, gunakan input().

  3. Gunakan editor yang berhenti untuk Anda. Beberapa editor yang disiapkan untuk python akan secara otomatis menjeda untuk Anda setelah eksekusi. Editor lain memungkinkan Anda untuk mengonfigurasi baris perintah yang digunakannya untuk menjalankan program Anda. Saya merasa sangat berguna untuk mengkonfigurasinya sebagai " python -i myscript.py" ketika dijalankan. Itu menjatuhkan Anda ke shell python setelah akhir program, dengan lingkungan program dimuat, sehingga Anda dapat bermain lebih lanjut dengan variabel dan memanggil fungsi dan metode.

nosklo
sumber
8
+1 ke item 3. Saya menggunakan Scite sebagai editor Python saya dan hanya menyimpan output di jendela output sendiri. Ini sangat berguna karena Anda berpotensi melihat output lebih dari satu kali dijalankan dalam satu jendela.
Joris Timmermans
Saya dapat melihat output dengan menjalankannya dari terminal yang sudah terbuka. Tapi saya perlu memberikan alamat skrip lengkap dalam perintah python? Bisakah itu dihindari? Ketika saya menggunakan metode raw_input (), itu memberi saya NameError: name 'raw_input'is tidak didefinisikan. Bisakah Anda menyarankan editor yang secara otomatis berhenti setelah eksekusi?
rohitmishra
1
@movingahead: mungkin Anda menggunakan python 3? dalam python 3 itu diubah namanya menjadi input (). Tapi saya akan menggunakan python 2.6 untuk saat ini, karena python 3 tidak memiliki perpustakaan pihak ketiga yang penting yang belum porting. (lihat pertanyaan lain tentang python 2vs3). Tentang editor, saya tidak menggunakan windows, notepad ++ memungkinkan Anda mengkonfigurasi perintah. Saya menggunakan emacs yang memiliki versi windows, tetapi saya tidak pernah menggunakannya.
nosklo
@nosklo terima kasih !! Yah saya menggunakan Python 3. Melakukan hal-hal dasar sekarang jadi seharusnya tidak menjadi masalah. Saya akan mencoba notepad ++. Saat ini saya sedang mencoba Pydev untuk Eclipse
rohitmishra
@movingahead Saya menggunakan Aptana studio. (pydev pra dikemas). itu sangat bagus. tidak ada yang bisa dikatakan.
v.oddou
52

cmd /kadalah cara khas untuk membuka aplikasi konsol (tidak hanya Python) dengan jendela konsol yang akan tetap ada setelah aplikasi ditutup. Cara termudah yang dapat saya pikirkan untuk melakukan itu, adalah dengan menekan Win + R, ketik cmd /klalu seret & letakkan skrip yang Anda inginkan ke dialog Run.

tzot
sumber
3
Jawaban yang fantastis. Anda seharusnya mendapatkan ini.
Jagu
1
Hanya fyi untuk perintah os.system python yang akan Anda lakukan os.system ("cmd / k" + myAppPath + "" + myFlagsString)
Jay
1
cmd /khanya untuk Windows. Saya tidak dapat membantu dengan alternatif Mac, maaf.
tzot
Apakah Anda harus menyeret skrip, termasuk perintah Python itu sendiri? Maaf bisakah saya punya contoh? Saya baru, sangat baru di Python di bawah windows.
Fandango68
1
Jawaban ini adalah yang paling lurus ke depan dan melakukan apa yang saya butuhkan di lingkungan windows. Setelah program dijalankan, jendela terminal tetap terbuka.
CameronAtkinson
41

Mulai skrip dari jendela cmd yang sudah terbuka atau di akhir skrip tambahkan sesuatu seperti ini, dengan Python 2:

 raw_input("Press enter to exit ;)")

Atau, dalam Python 3:

input("Press enter to exit ;)")
Anurag Uniyal
sumber
1
"Tombol apa saja" tidak akan berfungsi, hanya Enter yang akan (atau Ctrl + D, tergantung di mana kita berada).
Daniel Andersson
1
@DanielAndersson ya, mengubah teks
Anurag Uniyal
55
Jika Anda memikirkannya, agak dalam bahwa hanya "masuk" yang memungkinkan Anda untuk "keluar" ...
Joel B
Ketahuilah bahwa terminal akan ditutup, jika ada pengecualian
johnson
19

Untuk menjaga jendela Anda terbuka jika ada pengecualian (belum, saat mencetak pengecualian)

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

Untuk menjaga jendela tetap terbuka:

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

Untuk Python3 Anda harus menggunakan input()di tempatraw_input() , dan tentu saja menyesuaikan printpernyataan.

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

Untuk menjaga jendela tetap terbuka:

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()
Antonio
sumber
15

Anda dapat menggabungkan jawaban sebelumnya: (untuk Pengguna Notepad ++)

tekan F5 untuk menjalankan skrip saat ini dan ketik perintah:

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

dengan cara ini Anda tetap dalam mode interaktif setelah mengeksekusi skrip Notepad ++ python Anda dan Anda dapat bermain-main dengan variabel Anda dan seterusnya :)

feinmann
sumber
Ini membuat file batch Windows yang hebat, jika Anda mengubah $ (FULL_CURRENT_PATH) menjadi nama jalur Windows.
Noumenon
Saya merasa jauh lebih mudah untuk mendapatkan pluggin PyNPP dan menetapkan pintasan untuk menjalankannya (jangan lupa untuk menonaktifkan pintasan F5 sebelumnya)
JinSnow
11

Buat file batch Windows dengan 2 baris ini:

python your-program.py

pause
maurizio
sumber
2
Atau import os os.system("pause")di akhir .pyfile
Spikatrix
4
Ini adalah satu-satunya jawaban di sini yang bahkan jauh benar. Jawaban yang memerlukan merusak setiap script Python yang pernah Anda menjalankan dengan raw_inputatau sampah lainnya hanya salah. Baik ketik perintah Anda pada baris perintah seperti yang diharapkan Python Anda, atau gunakan bahasa batch yang telah disediakan dengan MS-DOS untuk tujuan ini sejak Agustus 1981 .
Kevin J. Chase
1
lebih baik lagi, gunakan python %*dan atur sebagai salah satu program "buka dengan" sehingga Anda dapat mengklik kanan file .py untuk membuka jendela jeda atau saya juga memasukkannya ke folder Anaconda3 saya (di PATH) sebagai py_pause.bat jadi sekarang Saya dapat lari py_pause my-prog.py all my argsdari garis cmd
brian
7

Dalam python 2 Anda dapat melakukannya dengan: raw_input ()

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

Di python 3 Anda bisa melakukannya dengan: input ()

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

Juga, Anda dapat melakukannya dengan waktu. Tidur (waktu)

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

Dengan menggunakan atexit, Anda dapat menjeda program tepat saat keluar. Jika kesalahan / pengecualian adalah alasan untuk keluar, itu akan berhenti setelah mencetak stacktrace.

import atexit

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

Dalam program saya, saya memasukkan panggilan ke atexit.registerdalam exceptklausa, sehingga hanya akan berhenti jika ada kesalahan.

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.
leewz
sumber
5

Saya punya masalah serupa. Dengan Notepad ++ saya biasa menggunakan perintah: C:\Python27\python.exe "$(FULL_CURRENT_PATH)"yang menutup jendela cmd segera setelah kode berakhir.
Sekarang saya menggunakan cmd /k c:\Python27\python.exe "$(FULL_CURRENT_PATH)"yang membuat jendela cmd terbuka.

Matej
sumber
1
Anda mungkin ingin menambahkan "; C: \ Python27" ke akhir variabel lingkungan Path Anda. Dengan begitu ia dapat disingkat menjadi 'cmd / k python -i "$ (FULL_CURRENT_PATH)"' - Persis seperti yang dikatakan di atas ditambah dengan -i yang berguna.
Enigma
5

Di Python 3

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

Akan melakukan trik.

Amila
sumber
2

Untuk menjaga agar jendela tetap terbuka, saya setuju dengan Anurag dan ini adalah apa yang saya lakukan untuk menjaga jendela saya terbuka untuk program jenis perhitungan kecil pendek.

Ini hanya akan menampilkan kursor tanpa teks:

raw_input() 

Contoh berikut ini akan memberi Anda pesan yang jelas bahwa program telah selesai dan tidak menunggu prompt input lain di dalam program:

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

Catatan!
(1) Dalam python 3, tidak ada raw_input () , hanya input () .
(2) Gunakan tanda kutip tunggal untuk menunjukkan string; jika tidak, jika Anda mengetikkan doubl di sekitar sesuatu, seperti "raw_input ()", ia akan berpikir itu adalah fungsi, variabel, dll, dan bukan teks.

Dalam contoh berikut ini, saya menggunakan tanda kutip ganda dan itu tidak akan berfungsi karena ia berpikir ada jeda dalam tanda kutip antara "the" and "function" meskipun ketika Anda membacanya, pikiran Anda sendiri dapat memahaminya dengan sempurna:

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

Semoga ini membantu orang lain yang mungkin memulai dan masih belum menemukan cara berpikir komputer. Ini bisa memakan waktu cukup lama. :Hai)

Tuan Whybull
sumber
2

Jika Anda ingin menjalankan skrip Anda dari pintasan desktop, klik kanan file python Anda dan pilih Send to|Desktop (create shortcut). Kemudian klik kanan pintasan dan pilih Properties. Pada tab Shortcut pilih kotak teks Target: dan tambahkan cmd /k di depan jalan dan klik OK. Pintasan sekarang harus menjalankan skrip Anda tanpa menutup dan Anda tidak memerlukannyainput('Hit enter to close')

Catatan, jika Anda memiliki lebih dari satu versi python di mesin Anda, tambahkan nama python yang diperlukan yang dapat dieksekusi antara cmd / k dan jalur skrip seperti ini:

cmd /k python3 "C:\Users\<yourname>\Documents\your_scipt.py"
Paul Stevens
sumber
Terima kasih! Ini sebenarnya banyak membantu saya. Saya adalah pengguna Linux dan tidak bisa mengetahuinya.
Michael Bruce
1

Terlepas dari inputdan raw_input, Anda juga bisa menggunakan whileloop tak terbatas , seperti ini: while True: pass (Python 2.5 + / 3) atauwhile 1: pass (semua versi Python 2/3). Ini mungkin menggunakan daya komputasi.

Anda juga dapat menjalankan program dari baris perintah. Ketik pythonke dalam baris perintah (Mac OS X Terminal) dan itu harus mengatakan Python 3.?.?(versi Python Anda) Itu tidak menunjukkan versi Python Anda, atau mengatakan python: command not found, lihat ke dalam mengubah nilai PATH (nilai-nilai enviromentl, tercantum di atas) / ketik C:\(Python folder\python.exe. Jika itu berhasil, ketik pythonatau C:\(Python installation)\python.exedan direktori lengkap program Anda.

pengguna3836103
sumber
2
Ini seperti membiarkan mobil Anda berjalan sambil minum kopi atau tidur! Berbahaya pada banyak tingkatan
Fandango68
1

Jawaban yang sangat terlambat, tetapi saya membuat file Windows Batch yang disebut pythonbat.batberisi yang berikut ini:

python.exe %1
@echo off
echo.
pause

dan kemudian ditetapkan pythonbat.batsebagai pengendali default untuk .pyfile.

Sekarang, ketika saya mengklik dua kali .pyfile di File Explorer, itu membuka jendela konsol baru, menjalankan skrip Python dan kemudian jeda (tetap terbuka), sampai saya menekan sembarang tombol ...

Tidak diperlukan perubahan pada skrip Python.

Saya masih dapat membuka jendela konsol dan menentukan python myscript.pyjika saya ingin ...

(Saya baru memperhatikan @maurizio sudah memposting jawaban persis ini)

roryhewitt
sumber
0

Jika Anda ingin tetap membuka jendela cmd DAN berada di direktori file yang sedang berjalan ini berfungsi di Windows 10:

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

Saya menemukan solusi pada lingkungan py3 saya di win10 hanya menjalankan cmd atau PowerShell sebagai Administrator, dan output akan tetap di jendela konsol yang sama, semua jenis lain dari perintah pengguna menjalankan python akan menyebabkan python untuk membuka jendela konsol baru.

peter tom
sumber
0

Anda bisa menulis

input()

di akhir kode Anda

karena itu ketika Anda menjalankan skrip Anda, itu akan menunggu Anda untuk memasukkan sesuatu

{ENTER for example}
Zakaria EL MLILAH
sumber
-1

Anda dapat membuka PowerShell dan mengetik "python". Setelah Python diimpor, Anda dapat menyalin tempel kode sumber dari editor teks favorit Anda untuk menjalankan kode.

Jendelanya tidak mau menutup.

Shiladitya Mukherjee
sumber
-2
  1. Buka di sini dan unduh dan instal Notepad ++
  2. Buka di sini dan unduh dan instal Python 2.7 bukan 3.
  3. Mulai, Jalankan Powershell. Masukkan berikut. [Environment]::SetEnvironmentVariable("Path", "$env:Path;C:\Python27", "User")
  4. Tutup Powershell dan buka kembali.
  5. Buat direktori untuk program Anda. skrip mkdir
  6. Buka skrip cd direktori tersebut
  7. Di Notepad ++, dalam jenis file baru: print "hello world"
  8. Simpan file sebagai hello.py
  9. Kembali ke PowerShell dan pastikan Anda berada di direktori yang benar dengan mengetik dir. Anda akan melihat file Anda hello.py di sana.
  10. Pada jenis prompt Powershell: python hello.py
oldmcf
sumber
-2

Retasan sederhana untuk menjaga jendela tetap terbuka:

counter = 0

While (True):

    If (counter == 0):

        # Code goes here

    counter += 1

Penghitungnya adalah agar kode tidak terulang.

Kaycee
sumber
-2

Cara paling sederhana:

import time

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

ini akan meninggalkan kode selama 1 menit kemudian tutup.

ACodeMaster
sumber
1
Beraninya kau serius. Jadi tidak perlu. Itu sama sekali bukan tentang pertanyaan ini dan Anda tahu itu.
Redgar Tech
-3

Pada windows 10 masukkan di awal ini:

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

Aneh, tetapi itu bekerja untuk saya! (Bersama dengan input () pada akhirnya, tentu saja)

Radim Akudo
sumber