Seite 1 von 1

Automatisierung csv Dateien einlesen

Verfasst: Sonntag 11. August 2019, 20:58
von rregen
Als blutiger Anfänger mit Python stehe ich vor folgendem Problem. Es gelingt mir eine csv Datei nach entsprechender Pfadeingabe einzulesen und weiterzuverarbeiten.
Da sich der Name der Datei aber wöchentlich ändert würde ich gerne im Input festlegen, welcher "wöchentliche" Pfad geöffnet werden soll. Das heißt in der Anweisung d=open(.......) müsste woche_40 durch die Eigabe ersetzt werden , also woche_y. Gibt es hierfür eine Möglichkeit?
Vielen Dank für die Hilfe.
Hier der Code:
import sys

y = input("Welche Woche wollen Sie öffnen?")
print("Sie möchten Woche", y," öffnen!")

try:
d= open("C:/Users/User/Documents/Schule/Vertretungsplan/vertretungsplan_woche_40.csv")
except:
print ("Dateizugriff nicht erfolgreich")
sys.exit (0)

#Lesen des gesamten Texts:
gesamtertext=d.read()

#Schließen der Datei
d.close ()

#Umwandeln in eine Liste von Zeilen
zeilenliste = gesamtertext.split(chr(10))

Re: Automatisierung csv Dateien einlesen

Verfasst: Montag 12. August 2019, 07:56
von sparrow
Du möchtest Strings formatieren. Dafür gibt es verschiedene Möglichkeiten, die alle in jedem besseren Tutorial erklärt werden. Das Zauberwort seit Python 3.6 heißt "F Strings". Das hier sah bei einem kurzen Drüberschauen so aus, als würde es alle Möglichkeiten der String-Formatierung ganz gut beschreiben.

Nachtrag: Dateien sollte man mit dem with-Statement öffnen, damit man sich um Dinge wie das Schließen keine Gedanken machen muss.

Re: Automatisierung csv Dateien einlesen

Verfasst: Montag 12. August 2019, 08:37
von Sirius3
@rregen: gewöhn Dir gleich gute Variablennamen an. `y` für eine Woche ist nicht sehr gut, und `d` für ein Dateiobjekt auch nicht. Datentypen sollten nicht in den Namen vorkommen, statt zeilenliste also zeilen.
Statt split mit dem Zeileendezeichen gibt es splitlines. Aber normalerweise liest man nicht die gesamte Datei, um dann Zeilen zu haben, sondern iteriert gleich über das File-Objekt.
Nakte excepts sind an sich schon schlecht, weil man alles mögliche an Fehlern damit abfängt, und auch ein speziellerer Fehler wäre an der Stelle nicht gut, weil Du trotzdem vielleicht wichtige Informationen durch ein unaussagekräftiges "Dateizugriff nicht erfolgreich" ersetzt. Wenn es keine gute Fehlerbehandlung gibt, dann laß sie komplett weg.

Code: Alles auswählen

CSV_FILENAME = "C:/Users/User/Documents/Schule/Vertretungsplan/vertretungsplan_woche_{}.csv"
woche = input("Welche Woche wollen Sie öffnen?")
print(f"Sie möchten Woche {woche} öffnen!")

with open(CSV_FILENAME.format(woche)) as zeilen:
    for zeile in zeilen:
        # mach irgendwas mit jeder Zeile

Re: Automatisierung csv Dateien einlesen

Verfasst: Montag 12. August 2019, 20:54
von rregen
Danke für die guten Tips Sirius 3