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))
Automatisierung csv Dateien einlesen
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.
Nachtrag: Dateien sollte man mit dem with-Statement öffnen, damit man sich um Dinge wie das Schließen keine Gedanken machen muss.
@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.
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