@linn29: So wie die Logik dort beschrieben steht beendet die erste Leerzeile diese Schleife auch wenn danach noch Text kommt. Wenn in dem Text in der Zwischenablage Leerzeilen vorkommen können, dann kann man das so nicht als Kriterium für das Textende verwenden.
Es ist auch komisch/umständlich ausgedrückt. Wenn man nicht auf "\n" am Ende vom bisher gesammelt Text testet, sondern direkt die Eingabe ob die leer war, ist das Problem auch deutlicher zu sehen. Der Code ist äquivalent zu:
Code: Alles auswählen
text = ""
while True:
line = input()
if not line:
break
text += line + "\n"
Ich habe `input_datei` mal in `text` umbenannt, denn bei einem Namen mit `datei` am Ende würde man eine *Datei* erwarten. Also ein Objekt mit einer `read()`- und/oder `write()`-Methode und einer `close()`-Methode.
Was an dem Code dann immer noch ”unpythonisch” wäre ist das wiederholte erweitern einer Zeichenkette per ``+``/``+=`` denn das ist ineffizient weil Zeichenketten nicht veränderbar sind, und so in jedem Schleifendurchlauf mehr und mehr Daten im Speicher umherkopiert werden müssen. Idiomatisches Vorgehen ist das Sammeln der Zeilen in einer Liste und die dann am Ende mit der `join()`-Methode auf Zeichenketten zu verbinden:
Code: Alles auswählen
lines = list()
while True:
line = input()
if not line:
break
lines.append(line + "\n")
text = "".join(lines)
Das ganze lässt sich kürzer mit Hilfe von `sys.stdon`, der `iter()`-Funktion, und einem Generatorausdruck lösen:
Code: Alles auswählen
import sys
...
text = "".join(line + "\n" for line in iter(sys.stdin, ""))
Problem ist natürlich weiterhin, dass die erste Leerzeile das einlesen beendet. Wenn Leerzeilen in der Eingabe vorkommen können und dürfen, dann muss man sich etwas anderes als Endkennzeichen ausdenken was im normalen Text nicht vorkommen kann. Und auf das prüfen und es am Ende des Textes manuell eingeben.
Zum Verarbeiten von *.odt- und *.docx-Dateien gibt es Module von Drittanbietern. Wie einfach oder kompliziert es ist da dann den gewünschten Text zu extrahieren müsstest Du schauen. Also ob sich das vom Aufwand lohnt vs. wie umständlich das mit dem manuellen kopieren über die Zwischenablage ist.