Hi, ich würde gerne mit python Zeichen in einer Datei ersetzen. Hier mein Versuch: from tempfile import mkstemp from shutil import move from os import fdopen, remove with fdopen('out.txt','w') as new_file: with open('in.txt') as old_file: for line in old_file: newline = line.replace("a", "y") new_file.write(newline) Leider bekomme ich immer die etwas kryptische Fehlermeldung: Traceback (most recent call last): File "file.py", line 6, in <module> with fdopen('out.txt','w') as new_file: TypeError: an integer is required Wo soll da ein Integer benötigt werden? Ich versteh's nicht ;-)
Was willst du auch mit fdopen, das nimmt ein bereits offenes Dateihandle. Die Funktion die Du suchst und korrekt eine Zeile drunter verwendest heißt open()...
Kongruo schrieb: > Traceback (most recent call last): > File "file.py", line 6, in <module> > with fdopen('out.txt','w') as new_file: > TypeError: an integer is required > > Wo soll da ein Integer benötigt werden? Ich versteh's nicht ;-) nun, fdopen will als erstes Argument keinen String haben, sondern einen file-Deskriptor, was nunmal ein Integer ist. Siehe https://linux.die.net/man/3/fdopen
Vielleicht nimmst du auch das fileinput modul zum suchen und ersetzen wie hier beschrieben für python3 https://stackoverflow.com/questions/17140886/
1 | import fileinput |
2 | with fileinput.FileInput('in.txt', inplace=True,backup='.bak') as fin: |
3 | for line in fin: |
4 | print(line.replace('a','y', end='') |
Simon K. schrieb: > https://stackoverflow.com/questions/15039528/what-... Kannst Du die dort gegebene Antwort auf deutsch wiedergeben? Was sind die Vor- und Nachteile der drei Befehle und wann wird welcher eingesetzt?
Markus schrieb: > Kannst Du die dort gegebene Antwort auf deutsch wiedergeben? Hier das wichtigste: open() erstellt neue Dateiobjekte, os.open() erstellt OS-Level-Dateideskriptoren und os.fdopen() erstellt ein Dateiprojekt aus einem Dateideskriptor. Ein Dateideskriptor ist eine Ganzzahl, die die offene Datei in einer Tabelle von offenen Dateien identifiziert, die vom OS für jeden Prozess gehalten werden. Dateiobjekte sind Python-Klassen, die Dateideskriptoren verpacken, um das Arbeiten mit Dateien bequemer und weniger fehleranfälliger zu machen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.