Kann ich eine CSV-Datei inline mit Pythons CSV-Bibliothek oder einer ähnlichen Technik modifizieren?Inline-CSV-Dateibearbeitung mit Python
Aktuell Ich verarbeite eine Datei und aktualisiere die erste Spalte (ein Namensfeld), um die Formatierung zu ändern. Eine vereinfachte Version meiner Code sieht wie folgt aus:
with open('tmpEmployeeDatabase-out.csv', 'w') as csvOutput:
writer = csv.writer(csvOutput, delimiter=',', quotechar='"')
with open('tmpEmployeeDatabase.csv', 'r') as csvFile:
reader = csv.reader(csvFile, delimiter=',', quotechar='"')
for row in reader:
row[0] = row[0].title()
writer.writerow(row)
Die Philosophie funktioniert, aber ich bin gespannt, ob ich einen Inline bearbeiten tun können, so dass ich nicht die Datei dupliziert bin.
Ich habe versucht, folgen Sie, aber das hängt die neuen Datensätze an das Ende der Datei, anstatt sie zu ersetzen.
with open('tmpEmployeeDatabase.csv', 'r+') as csvFile:
reader = csv.reader(csvFile, delimiter=',', quotechar='"')
writer = csv.writer(csvFile, delimiter=',', quotechar='"')
for row in reader:
row[1] = row[1].title()
writer.writerow(row)
Im Allgemeinen, nein, das geht nicht. Sie könnten alle Daten aus der "r" -Datei lesen und sie in ein "StringIO" -Objekt wickeln. Dann können Sie das an den CSV-Reader übergeben, die Datei schließen und zum Schreiben wieder öffnen ... – mgilson