über python in eine txt datei reinschreiben?
ich kriege immer eine fehlermeldung, habe auch gegooglet was das problem sein könnte aber so richtig verstehen tu ich es nicht:
file = open('test.txt', "a")
testList = ['a', 'b', 'c']
for i in testList:
file.write(str(i) + '\n')
file.close()
Das ist mein Code und meine Fehlermeldung ist:
File "C:\Users\xxx\Documents\projekt\test.py", line 5, in <module>
file.close()
OSError: [Errno 9] Bad file descriptor
Wenn ich file.close() lösche, kommt keine Fehlermeldung, aber dann macht es auch nix an der Datei. Weiß jemand was ich da machen muss? Benutze Visual Studio Code
5 Antworten
![](https://images.gutefrage.net/media/default/user/15_nmmslarge.png?v=1551279448000)
Fast alle Einsteiger und auch ein sehr großer Teil an fortgeschrittenen Entwicklern öffnen Dateien in Python leider falsch.
Richtig und sicher wird das so gemacht:
with open('foo.txt', 'w', encoding='utf-8', errors='strict') as fp:
for c in 'abc':
print(c, file=fp)
Das ...
- ... ist viel kürzer,
- ... stellt sicher, dass die Datei auch im Fehlerfall korrekt geschlossen wird,
- ... spezifiziert explizit die Kodierung und die Fehlerbehandlung.
Bitte gewöhne dir diesen "Stil" an, und weise das Ergebnis von open() nie wieder händisch einer Variablen zu.
Viel Spaß noch! :)
![](https://images.gutefrage.net/media/default/user/13_nmmslarge.png?v=1551279448000)
Vielen Dank. Der eigentliche Fehler war der Virenschutz von windows...
Hat anscheinend mir keine Berechtigungen gegeben in der Datei was reinzuschreiben.
![](https://images.gutefrage.net/media/user/Kreasteve/1549907211360_nmmslarge__198_0_693_693_4414c15c41e45323101da0045847e66d.jpg?v=1549907211000)
Existiert die Datei?
Wenn nicht kannst du mit "a" auch nichts anhängen.
Entweder die Datei vorher anlegen oder "w" nehmen
![](https://images.gutefrage.net/media/default/user/5_nmmslarge.png?v=1438863662000)
a erzeugt eine nicht existierende Datei, öffnet fürs Schreiben und führt ein seek() zum Ende der Datei durch.
![](https://images.gutefrage.net/media/user/silentblub/1444750500_nmmslarge.jpg?v=1444750500000)
Entweder existiert die Datei nicht, oder du musst noch den Pfad angeben.
![](https://images.gutefrage.net/media/user/CSANecromancer/1569527110921_nmmslarge__0_0_200_200_206c5dc1b471eb79da3f219b3ef382b3.png?v=1569527111000)
os.path.normpath("C:/Users/xxx/Documents/projekt/test.py")
Versuch es mal mit diesem Dateipfad.
Ich habe zwar keine Ahnung von Python, aber bei so ziemlich allen mir bekannten Programmiersprachen führen einfache \ in Dateiangaben zu Problemen...
![](https://images.gutefrage.net/media/user/Kreasteve/1549907211360_nmmslarge__198_0_693_693_4414c15c41e45323101da0045847e66d.jpg?v=1549907211000)
Und nenne mal die Variable anders als "file"