Я написал скрипт, который работает, но, думаю, не самый эффективный.Что мне нужно сделать, это следующее:
- Сравните два файла CSV, которые содержат информацию о пользователе.По сути, это список участников, в котором один файл является более обновленной версией другого.
- Файлы содержат такие данные, как идентификатор, имя, состояние и т. Д. И т.ТОЛЬКО записи в новом файле, которые либо не существуют в старом файле, либо содержат обновленную информацию.Для каждой записи есть уникальный идентификатор, который позволяет мне определить, является ли запись новой или существовала ранее.
Вот код, который я написал до сих пор:
import csv
fileAin = open('old.csv','rb')
fOld = csv.reader(fileAin)
fileBin = open('new.csv','rb')
fNew = csv.reader(fileBin)
fileCout = open('NewAndUpdated.csv','wb')
fNewUpdate = csv.writer(fileCout)
old = []
new = []
for row in fOld:
old.append(row)
for row in fNew:
new.append(row)
output = []
x = len(new)
i = 0
num = 0
while i < x:
if new[num] not in old:
fNewUpdate.writerow(new[num])
num += 1
i += 1
fileAin.close()
fileBin.close()
fileCout.close()
С точки зрения функциональности, этот скрипт работает.Однако я пытаюсь запустить это на файлах, которые содержат сотни тысяч записей, и на это уходит несколько часов.Я предполагаю, что проблема заключается в чтении обоих файлов в списки и обработке всей строки данных как одной строки для сравнения.
Мой вопрос в том, что я пытаюсь сделать, это более быстрый, более эффективный способ обработки двух файлов для создания третьего файла, содержащего только новые и обновленные записи?У меня нет целевого времени, я просто хочу понять, есть ли в Python более эффективные способы обработки этих файлов.
Заранее благодарен за любую помощь.
ОБНОВЛЕНИЕ, чтобы включить примерстрока данных:
123456789,34, DOE, JOHN, 1764756,1234 MAIN ST., CITY, STATE, 305,1, A