Ich habe readline importiert, um eine benutzerdefinierte Tab-Vervollständigung zu meinem Programm hinzuzufügen. Jetzt muss ich die Ausgabe des Programms speichern, aber jeder Versuch, stdout umzuleiten, bricht die Tab-Vervollständigungsfunktionalität.Das Python-Modul "readline" kann die Ausgabeumleitung nicht verarbeiten.
Ich probierte python3 script.py | tee txt.txt
Hexe schien am nächsten zum Drucken zu sowohl stdout und eine Textdatei, aber es funktioniert nicht.
hier ist die individuelle Tabulatorvervollständigung Klasse mit Funktionsaufruf von main (für alle Fälle):
import readline
class MyCompleter(object):
def __init__(self, options):
self.options = sorted(options)
def complete(self, text, state):
if state == 0:
if text:
self.matches = [s for s in self.options if s and s.startswith(text)]
else:
self.matches = self.options[:]
try:
return self.matches[state]
except IndexError:
return None
def readlineset(a): # function called from main to turn on tab completion
# a is list of strings
readline.set_completer(MyCompleter(a).complete)
readline.parse_and_bind('tab: complete')
[Möglicherweise verwandt Python-Problem] (https://bugs.python.org/issue24829). Hintergrund: readline wurde entwickelt, um an interaktiven Terminals zu arbeiten, aber wenn die Ausgabe an einen anderen Ort umgeleitet wird (selbst wenn es zu Ihnen zurückreflektiert wird, wie "tee"), wird das Terminal für readline nicht interaktiv. –
Vielleicht würden Sie lieber 'typescript' verwenden, wenn Sie die Ausgabe Ihrer interaktiven Sitzung (anstelle von' tee') aufzeichnen möchten? –