Python: Zeichen in Datei ersetzen

Gast #5104220
Lesenswert?

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 ;-)
#5104273
Lesenswert?

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
Gast #5105818
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren