Python Datei schreiben funktioniert nicht?
Hallo. Ich wollte von einem Python Programm eine Datei schreiben lassen und habe diesen Code verwendet:
def file_write(text):
global file
with open(file, 'a+') as file_:
file_.write('\n' + str(text))
Wenn ich aber nun diese Funktion ausführen und ihr einen Parameter übergeben möchte, kommt eine Fehlermeldung, mit der ich nicht viel Anfangen kann: File
"<Dateipfad>", line 19, in file_write
with open(file, 'a+') as file_:
TypeError: expected str, bytes or os.PathLike object, not TextIOWrapper
ich übergebe doch einen String, was mache ich falsch?
6 Antworten
![](https://images.gutefrage.net/media/user/Hanibal545/1656531652297_nmmslarge__0_0_1080_1079_eb4d44530689a94c77c17752e5e1a1cb.jpg?v=1656531652000)
Ich denke, dass du bei text kein String übergibst und deshalb ein Fehler kommt. Ich hab es mal unter normalen Umständen ausprobiert und es hat geklappt.
def file_write(text: str) -> str:
with open("test.txt", 'a+') as file_:
file_.write('\n' + str(text))
file_write("Hello world")
![](https://images.gutefrage.net/media/user/klingelkus/1444744446_nmmslarge.jpg?v=1444744446000)
Alternativ probiere es mal mit:
print('mein String', file=open('Datei.txt', 'a'))
Dann spart man sich das with open(file, 'a+') as file_ und so weiter.
![](https://images.gutefrage.net/media/default/user/14_nmmslarge.png?v=1551279448000)
Wie funktioniert n dieses file.readlines(), was man so überall im Internet sieht, bei mir gibts das nd...
![](https://images.gutefrage.net/media/default/user/14_nmmslarge.png?v=1551279448000)
![](https://images.gutefrage.net/media/user/klingelkus/1444744446_nmmslarge.jpg?v=1444744446000)
Soweit ich weis geht das auch damit. Wird einfach immer unten angefügt. Allerdings weis ich nicht ob das für das Beispiel gilt oder ob dann da a+ oder so etwas ähnliches stehen muss.
![](https://images.gutefrage.net/media/user/1xxAylxx2/1649915308664_nmmslarge__1264_192_989_989_ae7032a7fc89a1e03af392d2274e3e4f.png?v=1649915309000)
Nimm mal das str() weg und probiere ob es klappt.
![](https://images.gutefrage.net/media/default/user/14_nmmslarge.png?v=1551279448000)
![](https://images.gutefrage.net/media/default/user/14_nmmslarge.png?v=1551279448000)
![](https://images.gutefrage.net/media/default/user/14_nmmslarge.png?v=1551279448000)
ich übergebe doch einen String
Ganz offensichtlich ja nicht.
was mache ich falsch?
Den Codeteil verschweigen in dem du die Variable file definierst.
P.S.: Ich bin mir zu 95% sicher, dass
print(type(file) == str)
die Ausgabe False erzeugen würde...
![](https://images.gutefrage.net/media/user/EnderLuca/1616169603315_nmmslarge__63_0_305_305_02c7c91b93a58692dd9adc9088ddf185.png?v=1616169603000)
TextIoWrapper ist genau der Type den open zurück gibt. Sicher nicht dass du irgendwo im code die Zeile "file = open(...)" hast?
Ich möchte am Ende den gesamten Inhalt der Datei in einer Liste (Array) stehen haben