Ich bin mit einem subprocess
interagieren und versuchen zu erkennen, wenn es für meine Eingabe bereit ist. Das Problem, das ich habe, ist, dass die Lese- oder readline
Funktionen auf dem Trennzeichen '\ n' am Ende der Zeile oder einem EOF angewiesen sind. Da diese subprocess
nie beendet wird, gibt es kein EOF
in dem dateiähnlichen Objekt. Da das Schlüsselwort, von dem ich auslösen möchte, dieses Trennzeichen nicht enthält, liefern die Funktionen read und readline
niemals. Zum Beispiel:Python benutzerdefinierte Trennzeichen für lesen oder readline
'Doing something\n'
'Doing something else\n'
'input>'
Da dieser Prozess nie verlassen hat, die Lese- oder Leseleitung nie ein EOF
oder \n
, die es erfordert, erhalten sehen.
Gibt es eine Möglichkeit, diese Datei wie ein Objekt zu lesen und ein benutzerdefiniertes Trennzeichen auf input>
zu setzen?
def custom_readlines(handle, line_separator="\n", chunk_size=64):
buf = "" # storage buffer
while not handle.closed: # while our handle is open
data = handle.read(chunk_size) # read `chunk_size` sized data from the passed handle
if not data: # no more data...
break # break away...
buf += data # add the collected data to the internal buffer
if line_separator in buf: # we've encountered a separator
chunks = buf.split(line_separator)
buf = chunks.pop() # keep the last entry in our buffer
for chunk in chunks: # yield the rest
yield chunk + line_separator
if buf:
yield buf # return the last buffer if any
Leider wegen Python Standardpuffer Richtlinien, die Sie nicht in der Lage sein, große Schwaden von Daten zu ergreifen, wenn sie von nicht vorgesehen sind:
Können Sie Ihren Code anzeigen? (ein kleines minimales Beispiel) –
Wir brauchen wirklich [mcve], um Ihnen bei diesem Problem zu helfen. –
Lesen Sie jeweils das eingegebene Zeichen. – Goyo