demos88
05-02-2013, 23:29
Ciao a tutti,
ho una domanda abbastanza particolare e, almeno per me, difficile, ma essendo un progetto per la tesi di laurea, mi piacerebbe venirne a capo.
Ho scritto uno script (in Python3, versione 3.1) che deve gestire degli input provenienti da socket e da stdin, usando un select. Tutto bene, nessun problema con il select, ora però mi è stata chiesta una funzionalità aggiuntiva: devo permettere all'utente di navigare tra la cronologia degli input precedenti (mediante freccia-su e freccia-giu), come in una comune shell interattiva.
Ho provato a inserire la variabile di ambiente PYTHONSTARTUP con il seguente codice:
import readline
import rlcompleter
import atexit
import os
# tab completion
readline.parse_and_bind('tab: complete')
# history file
histfile = os.path.join(os.environ['HOME'], '.pythonhistory')
try:
readline.read_history_file(histfile)
except IOError:
pass
atexit.register(readline.write_history_file, histfile)
del os, histfile, readline, rlcompleter
e funziona, ma solo per la console interattiva di python3.
A me serve che funzioni dentro agli script, per esempio dentro a un banale script del tipo:
import sys
while 1:
sys.stdin.readline()
Con il pythonstartup non funziona, e freccia-su viene visto come carattere speciale ^[[A e non è quello che voglio.
Sapete darmi qualche consiglio?
Grazie :D
ho una domanda abbastanza particolare e, almeno per me, difficile, ma essendo un progetto per la tesi di laurea, mi piacerebbe venirne a capo.
Ho scritto uno script (in Python3, versione 3.1) che deve gestire degli input provenienti da socket e da stdin, usando un select. Tutto bene, nessun problema con il select, ora però mi è stata chiesta una funzionalità aggiuntiva: devo permettere all'utente di navigare tra la cronologia degli input precedenti (mediante freccia-su e freccia-giu), come in una comune shell interattiva.
Ho provato a inserire la variabile di ambiente PYTHONSTARTUP con il seguente codice:
import readline
import rlcompleter
import atexit
import os
# tab completion
readline.parse_and_bind('tab: complete')
# history file
histfile = os.path.join(os.environ['HOME'], '.pythonhistory')
try:
readline.read_history_file(histfile)
except IOError:
pass
atexit.register(readline.write_history_file, histfile)
del os, histfile, readline, rlcompleter
e funziona, ma solo per la console interattiva di python3.
A me serve che funzioni dentro agli script, per esempio dentro a un banale script del tipo:
import sys
while 1:
sys.stdin.readline()
Con il pythonstartup non funziona, e freccia-su viene visto come carattere speciale ^[[A e non è quello che voglio.
Sapete darmi qualche consiglio?
Grazie :D