У меня есть этот скриптSense стрелка вверх в Python?
import sys, os, termios, tty
home = os.path.expanduser("~")
history = []
if os.path.exists(home+"/.incro_repl_history"):
readhist = open(home+"/.incro_repl_history", "r+").readlines()
findex = 0
for j in readhist:
if j[-1] == "\n":
readhist[findex] = j[:-1]
else:
readhist[findex] = j
findex += 1
history = readhist
del readhist, findex
class _Getch:
def __call__(self):
fd = sys.stdin.fileno()
old_settings = termios.tcgetattr(fd)
try:
tty.setraw(sys.stdin.fileno())
ch = sys.stdin.read(3)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
return ch
while True:
try:
cur = raw_input("> ")
key = _Getch()
print key
if key == "\x1b[A":
print "\b" * 1000
print history[0]
history.append(cur)
except EOFError:
sys.stdout.write("^D\n")
history.append("^D")
except KeyboardInterrupt:
if not os.path.exists(home+"/.incro_repl_history"):
histfile = open(home+"/.incro_repl_history", "w+")
for i in history:
histfile.write(i+"\n")
else:
os.remove(home+"/.incro_repl_history")
histfile = open(home+"/.incro_repl_history", "w+")
for i in history:
histfile.write(i+"\n")
sys.exit("")
При запуске он получить это содержимое /home/bjskistad/.incro_repl_history
, читает строки, и удаляет Newspace характер, а затем определяет/функцию _Getch
класса. Затем он запускает основной цикл скрипта. Это try
s для установки cur
на raw_input()
. Затем я пытаюсь определить стрелку вверх, используя класс _Getch
. Здесь я испытываю проблемы. Я не могу почувствовать стрелку вверх, используя мой класс _Getch
. Как я могу ощущать стрелку вверх с моим текущим кодом?
Этот код выглядит немного древним. – baranskistad
Какой код для входа? – baranskistad
Древний, но доступный с Python 3. Попробуйте chr (13) для Enter, chr (27) для Escape ... –