In den Dateinamen eine Variable einfügen lassen die selbstständig weiter zählt

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Challanger
User
Beiträge: 16
Registriert: Dienstag 26. Januar 2016, 16:49

Code: Alles auswählen

vokabel ="Dieter"
for zahl in range(3):
    filename ="Name-.csv"
    file1 = open(filename, "w")
    file1.write(vokabel)
    file1.close()
Ich kann das Problem schlecht beschreiben, sonst hätte ich auch wohl mit Google lösen können.
Ich möchte mit dem Script erreichen das mir drei CSV Dateien ausgegeben werden mit den Dateinamen

Name-01.csv
Name-02.csv usw.

also einen Zähler einbauen

Bin über hilfe sehr dankbar

mfg Sönke
Sirius3
User
Beiträge: 18250
Registriert: Sonntag 21. Oktober 2012, 17:20

Um in Strings Variablen einzusetzen benutzt man f-Strings.
Dateien öffnet man innerhalb eines with-Statements und für csv-Dateien gibt es das csv-Modul.

Code: Alles auswählen

import csv

vokable = "Dieter"
for zahl in range(1, 4):
    filename = f"Name-{zahl:02d}.csv"
    with open(filename, 'w', encoding='utf8', newline='') as csvfile:
        writer = csv.writer(csvfile)
        writer.writerow([vokabel])
Zuletzt geändert von Sirius3 am Sonntag 15. September 2024, 09:07, insgesamt 1-mal geändert.
Benutzeravatar
noisefloor
User
Beiträge: 4173
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

der Dateiname ist auch "nur" ein String, d.h. du kannst auf den Dateinamen alle Möglichkeiten der Stringformatierung von Python anwenden.

Links: Gruß, noisefloor
Challanger
User
Beiträge: 16
Registriert: Dienstag 26. Januar 2016, 16:49

Super ich bedanke mich

nochmal das Script (waren kleine Fehler drinn, aber bitte nicht falsch verstehen :-) )

Code: Alles auswählen

import csv

vokable = "Dieter"
for zahl in range(1, 4):
    dateiname = f"Name-{zahl:02d}.csv"
    with open(dateiname, 'w', encoding='utf8', newline='') as csvfile:
        writer = csv.writer(csvfile)
        writer.writerow([vokable])
Benutzeravatar
sparrow
User
Beiträge: 4526
Registriert: Freitag 17. April 2009, 10:28

Ergänzend noch der Hinweis auf pathlib.Path.glob.
Wenn die Anforderung der 4 Dateien immer gleich bleibt, wäre die hier gezeigt Lösung richtig. Auch weil man dann die Gewisseheit hat, dass alle Dateien auch tatsächlich vorhanden sind.
Falls die Anzahl der Dateien variabel ist, könnte man mit entsprechenden Wildcards alle finden: Name-*.csv
Sirius3
User
Beiträge: 18250
Registriert: Sonntag 21. Oktober 2012, 17:20

@sparrow: es geht um das Schreiben von Dateien, nicht lesen.
Benutzeravatar
sparrow
User
Beiträge: 4526
Registriert: Freitag 17. April 2009, 10:28

Danke für den Hinweis, Sirius3.
Wer lesen kann ist klar im Vorteil.
Antworten