@Freumel: Was heisst „funktioniert nicht immer“ denn genau? Um Fehler zu beheben, muss man ja erst einmal wissen was der/die Fehler ist/sind.
Der Name `zeile` wäre für einen Wert passend der *eine* Zeile repräsentiert, nicht für eine Liste mit Zeilen. Gleiches gilt für `zelle`.
``for i in range(len(sequence)):`` ist in Python ein „anti-pattern“. Man kann direkt über die Elemente von Sequenztypen iterieren, ohne den Umweg über einen Index. Falls man *zusätzlich* einen fortlaufenden Zahlwert benötigt, gibt es die `enumerate()`-Funktion.
Im ersten Beispiel könnte man die Datei früher schliessen; nach dem Einlesen der Zeilen in die Liste. Das ginge auch ohne ``for``-Schleife: ``zeilen = list(file)``. Und bei `zellen` könnte man statt der ``for``-Schleife eine „list comprehension“ verwenden: ``zellen = [zeile.split(';') for zeile in zeilen]``.
Bei Dateien bietet sich die ``with``-Anweisung an um sie sicher wieder zu schliessen, auch wenn beispielsweise eine Ausnahme auftritt während man liest oder schreibt.
Im zweiten Beispiel fehlt eine schliessende Klammer, das kann so also nie gelaufen sein, weil es nicht einmal am Compiler vorbei kommt.
Das Ersetzen einer Zeichenkette im gesamten Pfad als Zeichenkettenoperation, und wie es aussieht auch noch um das letzte Pfadelement (den Dateinamen) zu entfernen ist falsch. Hier ist wohl eher die `os.path.dirname()`-Funktion gefragt.
Englisch und Deutsch zu mischen ist schon keine gute Idee, weil man sich dann gerne mal fragt ob man eine Variable nun `pfad` oder `path` genannt hat. Dann auch noch tatsächlich `pfad` und `path` als Namen zu verwenden erweitert das um die Frage was denn nun eigentlich was beschreibt.
Warum werden die Daten in zwei verschiedenen Formaten im Speicher gehalten? Also Zeilen und ”Zellen”?
Um das Gleichheitszeichen bei Zuweisungen ausserhalb von Argumentlisten, und nach Kommata, gehören Leerzeichen. Dann ”klebt” das nicht so aneinander und ist leichter lesbar.
Edit:
Code: Alles auswählen
result_folder = 'ergebnisse'
path = input('>>')
with open(path, 'r') as in_file:
lines = list(in_file)
rows = [line.split(';') for line in lines]
for row in rows:
path = os.path.join(os.path.dirname(path), result_folder, row[0])
with open(path, 'w') as out_file:
# …
pass