Python komut dosyası çıkış penceresini nasıl açık tutabilirim?


193

Python ile yeni başladım. Windows'da bir python komut dosyası yürüttüğümde, çıkış penceresi beliriyor ancak anında kayboluyor. Çıktımı analiz edebilmek için orada kalmam gerekiyor. Nasıl açık tutabilirim?


6
Gecikmiş +1000. Python'u Windows kullanan bir arkadaşım için bir öğretim dili olarak kullanıyorum ve bir komut dosyasını çalıştırabileceğimiz ve çıktıyı görebileceğimiz yere ulaşmada ne kadar sorun olduğuna (en azından mevcut belgelere dayanarak) inanamadım.
Cascabel

2
betiğinizi bir cmd penceresine sürükleyip bırakın
JinSnow

Çıktı penceresinin varsayılan olarak açık kalması gerektiğini düşünürsünüz. Mac OS'de Python çalıştırırken yapar. Çok sinir bozucu
Fandango68

Başka bir soruya bağlantı vereceğim Windows Konsolunu bir Python
Hatası'ndan

@Maurizio'nun aşağıda gönderdiği cevaba bakın - python komut dosyalarınızı değiştirmeniz gerekmez.
roryhewitt

Yanıtlar:


157

Birkaç seçeneğiniz var:

  1. Programı zaten açık olan bir terminalden çalıştırın. Bir komut istemi açın ve şunu yazın:

    python myscript.py

    Bunun çalışması için yolunuzda çalıştırılabilir python'a ihtiyacınız var. Windows'ta ortam değişkenlerini nasıl düzenleyeceğinizi kontrol edin ve ekleyin C:\PYTHON26(veya python'u yüklediğiniz herhangi bir dizini).

    Program sona erdiğinde, pencereyi kapatmak yerine cmd istemine geri dönecektir .

  2. Komut dosyanızın sonunda beklemek için kod ekleyin. Python2 için ekleniyor ...

    raw_input()

    ... senaryonun sonunda Enteranahtarı bekletiyor . Bu yöntem can sıkıcıdır, çünkü komut dosyasını değiştirmeniz ve işiniz bittiğinde kaldırmayı hatırlamanız gerekir. Diğer insanların senaryolarını test ederken özellikle sinir bozucu. Python3 için kullanın input().

  3. Sizin için duraklatan bir düzenleyici kullanın. Python için hazırlanan bazı editörler, yürütme işleminden sonra sizin için otomatik olarak duraklar. Diğer düzenleyiciler, programınızı çalıştırmak için kullandığı komut satırını yapılandırmanıza olanak tanır. python -i myscript.pyÇalışırken " " olarak yapılandırmayı özellikle yararlı buluyorum . Bu, program bittikten sonra programın sonunda sizi bir python kabuğuna bırakır, böylece değişkenler ve çağrı işlevleri ve yöntemleri ile daha fazla oynayabilirsiniz.


8
+1 - 3. madde. Scite'ı Python editörüm olarak kullanıyorum ve çıktıyı kendi çıkış penceresinde tutuyor. Bu gerçekten kullanışlıdır, çünkü tek bir pencerede birden fazla çalışmanın çıktısını potansiyel olarak görebilirsiniz.
Joris Timmermans

Çıkışı zaten açık olan bir terminalden çalıştırarak görebiliyorum. Ama python komutunda tam komut dosyası adresini vermeliyim? Bundan kaçınılabilir mi? Raw_input () yöntemini kullandığımda, bana NameError verir: name 'raw_input' tanımlı değil. Yürütmeden sonra otomatik olarak duraklatan bir düzenleyici önerebilir misiniz?
rohitmishra

1
@movingahead: belki python 3 kullanıyorsunuz? python 3'te input () olarak yeniden adlandırıldı. Ama şimdilik python 2.6 kullanacağım, çünkü python 3 henüz taşınmamış önemli üçüncü taraf kütüphanelerinden yoksundur. (python 2vs3 ile ilgili diğer sorulara bakın). Editör hakkında, pencereleri kullanmıyorum, notepad ++ komutu yapılandırmanıza izin verir. Windows sürümü olan emacs kullanıyorum, ama hiç kullanmadım.
nosklo

@nosklo teşekkürler !! Yah Python 3 kullanıyorum. Temel şeyleri şimdi yapmak çok fazla bir sorun olmamalı. Notepad ++ 'ı deneyeceğim. Şu anda Eclipse için Pydev deniyorum
rohitmishra

@movingahead Aptana stüdyosunu kullanıyorum. (önceden paketlenmiş pydev). bu gerçekten iyi. söyleyecek bir şey yok.
v.oddou

52

cmd /kherhangi bir konsol uygulamasını (yalnızca Python'u değil) uygulama kapandıktan sonra kalacak bir konsol penceresiyle açmanın tipik yoludur. Bunu yapmayı düşündüğüm en kolay yol, Win + R tuşlarına basmak, cmd /kistediğiniz komut dosyasını Çalıştır iletişim kutusuna sürükleyip bırakmaktır.


3
Harika bir cevap. Bunu almalıydın.
Jagu

1
Python os.system komutu için sadece fyi os.system ("cmd / k" + myAppPath + "" + myFlagsString)
Jay

1
cmd /kyalnızca Windows içindir. Mac alternatifine yardım edemiyorum, üzgünüm.
Mart'ta tzot

Python komutunun kendisi de dahil olmak üzere komut dosyasını sürüklemeniz mi gerekiyor? Üzgünüm lütfen bir örnek alabilir miyim? Ben yeniyim, Python için pencereler altında çok yeniyim.
Fandango68

1
Bu cevap en basit olanıydı ve bir pencere ortamında tam olarak ihtiyacım olanı yapıyor. Program yürütüldüğünde terminal penceresi açık kalır.
CameronAtkinson

41

Komut dosyasını zaten açık olan cmd penceresinden başlatın veya komut dosyasının sonuna Python 2'de böyle bir şey ekleyin:

 raw_input("Press enter to exit ;)")

Veya Python 3'te:

input("Press enter to exit ;)")

1
"Herhangi bir anahtar" çalışmaz, yalnızca Enter işlevi olacaktır (veya bulunduğumuz yere bağlı olarak Ctrl + D).
Daniel Andersson

1
@DanielAndersson evet, metni değiştirdi
Anurag Uniyal

55
Bunu düşünürseniz, sadece "enter" ın "çıkmanıza" izin vereceği derin ...
Joel B

bir istisna oluşursa terminalin ne olursa olsun kapanacağını unutmayın
johnson

19

İstisna durumunda pencerenizi açık tutmak için (yine de istisnayı yazdırırken)

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

Her durumda pencereyi açık tutmak için:

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 için, gerekecek kullanmak input()yerineraw_input() , ve tabii ki uyum printifadeleri.

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

Her durumda pencereyi açık tutmak için:

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

cevapları daha önce birleştirebilirsiniz: (Notepad ++ Kullanıcısı için)

geçerli komut dosyasını çalıştırmak için F5 tuşuna basın ve komutu yazın:

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

Bu şekilde Notepad ++ python betiğinizi çalıştırdıktan sonra etkileşimli modda kalırsınız ve değişkenlerinizle birlikte oynayabilirsiniz :)


Bu, $ (FULL_CURRENT_PATH) öğesini bir Windows yol adına değiştirirseniz harika bir Windows toplu iş dosyası oluşturur.
Noumenon

Eklenti PyNPP'yi almayı ve çalıştırmak için bir kısayol atamayı çok daha kolay buldum (önceki F5 kısayolunu devre dışı bırakmayı unutmayın)
JinSnow

11

Şu 2 satırla bir Windows toplu iş dosyası oluşturun:

python your-program.py

pause

2
Veya dosyanın import os os.system("pause")sonunda.py
Spikatrix

4
Uzaktan bile doğru olan tek cevap budur. Bozulmasını gerektiren Cevapları her Hiç çalışacak tek Python komut ile raw_inputya da diğer çöp basitçe yanlış. Komut satırınıza komutunuzu Python'un sizden beklediği şekilde yazın veya Ağustos 1981'den beri MS-DOS ile sağlanan toplu dili tam olarak bu amaçla kullanın .
Kevin J. Chase

1
daha da iyisi, kullanın python %*ve "ile birlikte aç" programlarından biri olarak ayarlayın , böylece bir duraklama penceresi açmak için bir .py dosyasına sağ tıklayabilirsiniz veya ayrıca Ana_da3 klasörüne (PATH'de) py_pause.bat olarak koydum. py_pause my-prog.py all my argsCmd hattından koşabilirim
brian

7

Python 2'de şunu yapabilirsiniz: raw_input ()

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

Python 3'te bunu şu şekilde yapabilirsiniz: input ()

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

Ayrıca, time.sleep (time) ile de yapabilirsiniz.

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

7

Düğmesini kullanarak atexit, programı çıktıktan hemen sonra duraklatabilirsiniz. Bir hata / istisna çıkış nedeniyse, yığın izini yazdırdıktan sonra duraklar.

import atexit

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

Benim programında, ben çağrısına koymak atexit.registeriçinde exceptbir şeyler ters giderse sadece duraklar böylece, fıkra.

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

Benzer bir sorun yaşadım. Notepad ++ ile C:\Python27\python.exe "$(FULL_CURRENT_PATH)"kod sonlandırıldıktan hemen sonra cmd penceresini kapatan şu komutu kullanıyordum .
Şimdi cmd /k c:\Python27\python.exe "$(FULL_CURRENT_PATH)"cmd penceresini açık tutan kullanıyorum .


1
Yol ortamı değişkeninizin sonuna "; C: \ Python27" eklemek isteyebilirsiniz. Bu şekilde 'cmd / k python -i "$ (FULL_CURRENT_PATH)"' olarak kısaltılabilir.
Enigma

5

Python 3'te

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

Hile yapacağım.


2

Pencereyi açık tutmak için Anurag'a katılıyorum ve kısa hesaplama tipi programları için pencerelerimi açık tutmak için yaptığım şey bu.

Bu yalnızca metin içermeyen bir imleci gösterir:

raw_input() 

Bu sonraki örnek size programın yapıldığına ve program içindeki başka bir giriş isteminde beklemediğine dair net bir mesaj verecektir:

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

Not!
(1) Python 3'te raw_input () yoktur , sadece input () olur .
(2) Bir dizeyi belirtmek için tek tırnak kullanın; aksi takdirde, "raw_input ()" gibi bir şeyin etrafına çiftler yazarsanız, bunun metin değil, bir işlev, değişken vb. olduğunu düşünür.

Bu sonraki örnekte, çift tırnak kullanımı ve olmayacak bunu okuduğunda, kendi zihin bunun mükemmel mantıklı olsa bile "" ve "fonksiyonu" arasında tırnak içinde bir ara var işi düşündüğü için:

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

Umarım bu, başlangıçta olabilecek ve hala bilgisayarın nasıl düşündüğünü çözemeyen diğerlerine yardımcı olur. Biraz zaman alabilir. :Ö)


2

Komut dosyanızı bir masaüstü kısayolundan çalıştırmak istiyorsanız, python dosyanızı sağ tıklayın ve öğesini seçin Send to|Desktop (create shortcut). Ardından kısayola sağ tıklayın ve Özellikler'i seçin. Kısayol sekmesinde Hedef: metin kutusunu seçin ve cmd /k yolun önüne ekleyin ve Tamam'ı tıklatın. Kısayol artık komut dosyanızı kapatmadan çalıştırmalı veinput('Hit enter to close')

Makinenizde birden fazla python sürümü varsa, cmd / k ile aşağıdaki komut dosyası yolu arasında gerekli olan python'un adını ekleyin:

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

Teşekkürler! Bu aslında bana çok yardımcı oldu. Ben bir Linux kullanıcısıyım ve bunu anlayamadım.
Michael Bruce

1

Bunun dışında inputve raw_input, ayrıca sonsuz kullanabilirsiniz while: Böyle döngü, while True: pass(Python 2.5 + / 3) veya while 1: pass(Python 2/3 tüm sürümlerini). Ancak bu hesaplama gücünü kullanabilir.

Programı komut satırından da çalıştırabilirsiniz. Tip pythonkomut satırından (Mac OS X Terminali) içine ve şöyle demeliydi Python 3.?.?seninse Python sürümünü gösterin ya diyor vermez (Kişisel Python sürümü) python: command not found, (enviromentl yukarıda listelenen değerler,) / türü YOLU değerlerini değiştirerek içine göz C:\(Python folder\python.exe. O başarılı, tip olursa pythonveya C:\(Python installation)\python.exeve tam dizin programınızın.


2
Bu, kahve veya uykuya giderken arabanızı çalışır durumda bırakmak gibidir! Birçok düzeyde tehlikeli
Fandango68

1

Çok gecikmiş bir yanıt, ancak pythonbat.bataşağıdakileri içeren bir Windows Toplu İş dosyası oluşturdum :

python.exe %1
@echo off
echo.
pause

ve ardından dosyalar pythonbat.batiçin varsayılan işleyici olarak belirtilir .py.

Şimdi, .pyDosya Gezgini'nde bir dosyayı çift ​​tıkladığımda , yeni bir konsol penceresi açar, Python komut dosyasını çalıştırır ve herhangi bir tuşa basana kadar duraklar (açık kalır) ...

Herhangi bir Python betiğinde değişiklik gerekmez.

Hala bir konsol penceresi açabilir ve python myscript.pyisteyip istemediğimi belirtebilirim ...

(@Maurizio'nun bu cevabı zaten gönderdiğini fark ettim)


0

Cmd-penceresini açık tutmak ve çalışan dosya dizininde olmak istiyorsanız, bu Windows 10'da çalışır:

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

0

Win10'daki py3 ortamımdaki çözümü Yönetici olarak sadece cmd veya powershell olarak çalıştırdığımı gördüm ve çıktı aynı konsol penceresinde kalacaktı, python'un çalıştırdığı diğer herhangi bir tür python'un yeni bir konsol penceresi açmasına neden olacaktı.


0

Sadece yazabilirsin

input()

kodunuzun sonunda

bu yüzden senaryonu çalıştırdığın zaman bir şey girmeni bekler

{ENTER for example}

-1

PowerShell'i açıp "python" yazabilirsiniz. Python içe aktarıldıktan sonra, kodu çalıştırmak için kaynak kodunu favori metin düzenleyicinizden yapıştırın.

Pencere kapanmıyor.


-2
  1. Buraya gidin ve Notepad ++'ı indirip yükleyin
  2. Buraya gidin ve 3 değil Python 2.7'yi indirin ve yükleyin.
  3. Başlat, Powershell'i çalıştırın. Aşağıdakileri girin. [Environment]::SetEnvironmentVariable("Path", "$env:Path;C:\Python27", "User")
  4. Powershell'i kapatın ve yeniden açın.
  5. Programlarınız için bir dizin oluşturun. mkdir komut dosyaları
  6. Bu dizin cd komut dosyalarını açın
  7. Notepad ++ uygulamasında, yeni bir dosya türünde: print "hello world"
  8. Dosyayı hello.py olarak kaydedin
  9. Powershell'e geri dönün ve dir yazarak doğru dizinde olduğunuzdan emin olun. Orada hello.py dosyanızı görmelisiniz.
  10. Powershell istemine şunu yazın: python hello.py

-2

Pencereyi açık tutmak için basit bir kesmek:

counter = 0

While (True):

    If (counter == 0):

        # Code goes here

    counter += 1

Sayaç böylece kod kendini tekrar etmeyecektir.


-2

En basit yol:

import time

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

bu, kodu 1 dakika kadar açık bırakıp kapatır.


1
Ciddiye nasıl cüret edersin? Çok gereksiz. Bu sorunun ne olduğu hiç de öyle değil.
Redgar Tech

-3

Windows 10'da şunu başlatarak ekleyin:

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

Garip, ama benim için işe yarıyor! (Sonunda () ile birlikte, elbette)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.