Czy mogę zmodyfikować plik CSV w linii używając biblioteki CSV Pythona lub podobnej techniki?Edytowanie plików w formacie CSV Inline w Pythonie
Bieżąca przetwarzam plik i aktualizuję pierwszą kolumnę (pole nazwy), aby zmienić formatowanie. Uproszczona wersja mojego kodu wygląda następująco:
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)
Filozofia działa, ale jestem ciekaw, czy mogę zrobić zmienił inline tak, że nie jestem powielenie pliku.
Próbowałem wykonać, ale to dołącza nowe rekordy na końcu pliku zamiast zastępowania ich.
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)
Ogólnie, nie, nie możesz tego zrobić. Można odczytać wszystkie dane z pliku 'r'' i zawinąć je w obiekt' StringIO'. Następnie możesz przekazać to do czytnika csv, zamykając plik i otwierając ponownie do pisania ... – mgilson