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
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")
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.
Wie funktioniert n dieses file.readlines(), was man so überall im Internet sieht, bei mir gibts das nd...
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.
Nimm mal das str() weg und probiere ob es klappt.
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...
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