2012-11-21 21 views
10

Python'da aşağıdakine benzer bir betik olması mümkün mü? Bir python komut dosyasında komut girişini duraklatıp bekletme

... 
Pause 
-> 
Wait for the user to execute some commands in the terminal (e.g. 
    to print the value of a variable, to import a library, or whatever). 
The script will keep waiting if the user does not input anything. 
-> 
Continue execution of the remaining part of the script 

Esasen komut geçici piton komut satırı yorumlayıcısı kontrolü verir ve kullanıcı nasılsa o kısmı tamamlandıktan sonra devam.

Düzenleme: (cevap esinlenerek) ile gelip ne aşağıdaki gibi bir şey:

x = 1 

i_cmd = 1 
while True: 
    s = raw_input('Input [{0:d}] '.format(i_cmd)) 
    i_cmd += 1 
    n = len(s) 
    if n > 0 and s.lower() == 'break'[0:n]: 
    break 
    exec(s) 

print 'x = ', x 
print 'I am out of the loop.' 
+0

Bu soru bir * REPL * ([Read-Eval-Print-Loop] (https://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop) soruyor.) . [Benzer bir soru] (http://stackoverflow.com/questions/1395913/how-to-drop-into-repl-read-eval-print-loop-from-python-code) ile ilgili birkaç öneri bulunmaktadır. code.InteractiveInterpreter() 've' pdb'. – Possum

cevap

19

Eğer piton 2.x kullanıyorsanız: raw_input()

piton 3.x: input()

Örnek:

# do some stuff in script 
variable = raw_input('input something!: ') 
# do stuff with variable 
+0

Teşekkürler, ama belki yeterince açık değilim. İstediğim şey, komut dosyasının bir noktada durmasıdır (komut yazılırken konum belirtilir), daha sonra kontrolü çevirmene verir, böylece kullanıcı istediği herhangi bir şeyi yapabilir, örneğin bir şeyi yazdırmak için bazı kütüphaneleri içe aktarmak, hatta tüm senaryodan tamamen çıkmak için. Bu, bazı programlama dillerinde (IDL gibi) bilimsel hesaplamalarda yaygındır, ancak python'da mümkün olup olmadığından emin değilim. Raw_input() işlevi bunu yapamaz mı? – FJDU

+0

Belki de, raw_input döndürülen dizesini yürütmek için exec() işlevini kullanabilirim. – FJDU

+0

hmmm Kullanıcıya, bir komut dosyasının ortasında bulunan tercümanın tam kontrolünü vermenin bir yolunu bilmiyorum .... 'eval()' işlevini kullanarak buna biraz yaklaşabilirsiniz. Bunu kullanarak kullanıcı girişlerini yürütmek ve daha sonra açık tutmak için zor bir şey yapmak. –

1

~ bunu arıyordu düşünüyorum:

import re 

# Get user's name 
name = raw_input("Please enter name: ") 

# While name has incorrect characters 
while re.search('[^a-zA-Z\n]',name): 

    # Print out an error 
    print("illegal name - Please use only letters") 

    # Ask for the name again (if it's incorrect, while loop starts again) 
    name = raw_input("Please enter name: ") 
5

Bunu bilmek iyi yolu pdb ayıklayıcısını kullanmaktır. Öyleyse komutları girebilirsiniz istemi (PDB) At "duraklama" için

pdb.set_trace() 

kullanmak programın üstündeki

import pdb 

koymak böyle

(Pdb) print 'x = ', x 

olarak ve Ayrıca, buradaki amacınız olmasa da koddan da geçebilirsiniz. İşiniz bittiğinde sadece

(Pdb) c 

veya kelime 'devam' herhangi bir kısmını yazın ve kod yürütülmesine devam eder.

Nov 2015 tarihinde ayıklayıcıya Bir güzel kolay giriş https://pythonconquerstheuniverse.wordpress.com/2009/09/10/debugging-in-python/ olan ancak 'piton ayıklayıcısını' veya 'piton Pdb' google eğer bu tür birçok kaynaklar elbette vardır.

İlgili konular