Как удалить строку файла CSV, используя CSV Reader в Python? - PullRequest
0 голосов
/ 09 марта 2011

Я хочу обработать каждую строку файла CSV и сохранить в базе данных. После сохранения этой строки я хочу удалить эту строку в CSV-файле. Я написал код для извлечения и хранения строки. Но я застрял при удалении строки в CSV-файле.

Мой код:

import csv
  entries = csv.reader(open('/opt/workspace/jup/juppro/media/docs/phonebook.csv', 'rb'), dialect='excel-tab')
  entries_list = []
  entries_list.extend(entries)
  total_records= len(entries_list)
  uploaded_records=0
  for data in entries_list:
      uploaded_records=uploaded_records+1
      cols = data[0].replace('"','')
      cols1= cols.split(';')
      contact = phonebook()
      contact.email = cols1[0]
      contact.firstname = cols1[1]
      contact.lastname = cols1[2]
      contact.phoneno = cols1[3]
      #names.append(data[0])
      contact.save()

Ответы [ 2 ]

1 голос
/ 09 марта 2011
  1. Считайте CSV в память, например, список.
  2. Сохраните соответствующие строки в базе данных и удалите их из списка.
  3. Сохраните оставшиеся строки в списке обратно в файл CSV.
0 голосов
/ 09 марта 2011

Я предлагаю вам этот код

import csv
from os.path import getsize
from itertools import islice

print 'size of file :',getsize('/opt/workspace/jup/juppro/media/docs/phonebook.csv')

entries = csv.reader(open('/opt/workspace/jup/juppro/media/docs/phonebook.csv', 'rb'), dialect='excel-tab')

n = 3
cnt = 0
chunk = True
while chunk:
    chunk = list(islice(entries,n))
    if chunk==[]: 
        print 'processing ended'
        break
    # here: all the treatments of the rows being in chunk
    cnt += n
    print cnt

Если весь файл обработан, вы не заботитесь об удалении строк во время обработки: вы удалите файл после обработки.

Если вы хотите удалить некоторые строки на основе точных условий, произнесите это, и мы адаптируем приведенный выше код

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...