Python in Datei schreiben?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet
myVar = 100

newFile = open("test.txt", "w")
newFile.write(str(myVar))
newFile.close()
NoayHD 
Fragesteller
 03.09.2021, 21:21

Wenn ich nur eine Datei hab wo ich das alles rein schreiben will kann ich das newFile = open ganz am Anfang und dann immer

if message.content.startswith(!hello)

z = message.content

y = message.author

newFile.write(y + ’:‘ + z)

0
while1  03.09.2021, 21:23
@NoayHD

Ja, wenn die Datei bereits vorliegt machst du folgendes:

newFile = open("deinedatei.txt", "a") # das a ist ganz wichtig, sodass der neue text hinten an die datei gehängt wird.
0
NoayHD 
Fragesteller
 03.09.2021, 21:25
@while1

Also dann steht in der txt z.b

User#1728:helloUser#7888:bye

wenn ja kann man das auch so machen das es untereinander steht ?

0
while1  03.09.2021, 21:28
@NoayHD

Wusste irgendwie, dass diese Frage folgen wird :D

Dir fehlt dann ein "\n" also ein Zeilenumbruch:

newFile.write("blablabla\n") 
bzw: 
myVar = 100
newFile.write(str(myVar)+"\n") 
0
NoayHD 
Fragesteller
 03.09.2021, 21:29
@while1

Ok und die str usw sind die immer zwingend ?

0
while1  03.09.2021, 21:30
@NoayHD

Nein, nur wenn die Variable eine Zahl ist.

0
NoayHD 
Fragesteller
 03.09.2021, 21:33
@while1

Heißt immer wenn eine Variable Buchstaben und Zahlen enthält und ich sie in einem anderen Befehl wie z.b print nutzen möchte muss ein str davor ? Und wann benötige ich dann ein int wenn ich mit der Variable rechnen will ? Also z.b Ergebnis = A + int(B) und dann kommt wenn A = 10 und B = Q2 ist Ergebnis 12 ?

0
while1  03.09.2021, 21:35
@NoayHD

Nein, Buchstaben, bzw Zeichenfolgen wie "ABCDEFG" sind doch bereits strings.
str() bedeutet, dass du eine Zahl zu einem String umwandelst.

Aus 1 wird "1", damit kannst du dann natürlich nicht mehr rechnen.

"1"+"1" = "11"

Dir fehlen total die Basics, würde erstmal ein Grundlagen-Tutorial machen.

0
NoayHD 
Fragesteller
 03.09.2021, 21:48
@while1

Lerne gerade noch und bisher habe ich noch nicht gelernt was str kann und int

0
NoayHD 
Fragesteller
 04.09.2021, 09:44
@while1

und wie krieg ich es hin das das vorherige nicht ersetzt sondern das es einfach dazu geschrieben wird ?

0

f = open('/path/to/file.txt','a')

f.write(hello)

f.close()

NoayHD 
Fragesteller
 03.09.2021, 21:23

Wenn ich nur eine Datei hab wo ich das alles rein schreiben will kann ich das f = open ganz am Anfang und dann immer 

if message.content.startswith(!hello)

z = message.content 

y = message.author

f.write(y + ’:‘ + z)

0
Technikfrage319  03.09.2021, 21:36
@NoayHD

Ich bin mir nicht sicher aber ich könnte mir vorstellen dass man jedes mal das f.open machen muss. ist aber kein Problem, weil das 'a' sagt, dass es nicht überschrieben, sondern hintendrangehängt wird. Sonst passt der Code. Bilde mir aber ein dass discord.py oder irgendeine andere Bibliothek die in der Erklärung verwendet wird ein logging-System hat, das genau das macht.

0
regex9  04.09.2021, 01:27
@Technikfrage319

Die open-Funktion muss nur aufgerufen werden, wenn die Datei noch nicht geöffnet ist. Sie wird erst mit close wieder geschlossen.

0
Technikfrage319  04.09.2021, 11:25
@regex9

Ok. War mir nicht sicher, da ich selbst in letzter Zeit damit gearbeitet hatte und wenn ich einmal f.read() oder f.readlines() aufgerufen hatte, war f danach leer. Somit musste ich vor jedem f.read() es erneut öffnen, oder nur einmal f.read()en und das in eine Variable speichern. Daher die Vermutung, auch f.write() würde nur einmal funktionieren.

0
regex9  04.09.2021, 11:55
@Technikfrage319

Wenn du in die Datei schreibst und anschließend den geschriebenen Inhalt direkt wieder auslesen möchtest, musst du den Eingabestrom erst leeren (flush), denn sonst steht der neue Inhalt tatsächlich noch nicht in der Datei (der Aufruf von write allein reicht nicht). Das Schließen und Neuöffnen der Datei wäre hierbei eine mögliche Maßnahme, denn mit Schließen der Datei wird auch ein automatischer flush durchgeführt.

Bei abwechselndem Prozedere (Schreiben/Lesen) sollte es aber auch ausreichen, die Daten nebenher in einer Variable (z.B. einer Liste) zu speichern. Mit der operiert man im Programm und braucht diese nur bei Gelegenheit in die Datei schreiben.

0
with open ("myfile.txt","a") as fh:  #Ggf. abweichender Modus
    #do other stuff
    if somecondition:
          fh.write(f"Msg: (msg)\n")
          fh.flush()

So sieht das Grundgerüst aus. Je nach genauem Anwendungszweck bieten sich weitere Möglichkeiten.

Du kannst entweder pickel verwenden oder json.

NoayHD 
Fragesteller
 03.09.2021, 21:17

Ok

2
BlueX15  03.09.2021, 22:02

Er kann es auch in eine Txt schreiben außerdem heißt es pickle.... Und wenn eher JSON

0