>

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()


  • 답변 # 1

    <올>

    CSV를 메모리로 읽습니다 (예 : 목록.

    관련 행을 데이터베이스에 저장하고 목록에서 제거하십시오.

    목록의 나머지 행을 다시 CSV 파일로 저장합니다.

  • 답변 # 2

    이 코드를 제안합니다

    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
    
    

    모든 파일이 처리되면 처리하는 동안 행을 삭제하지 않아도됩니다. 처리 후 파일이 삭제됩니다.

    정확한 조건에 따라 일부 행을 삭제하려면 해당 행을 말하면 위 코드를 적용합니다

관련 자료

  • 이전 postgresql - 타임 스탬프 배열을 포함하는 열을 Postgres의 구분 된 텍스트 문자열로 분할하려고 할 때 "함수가 존재하지 않습니다"오류
  • 다음 Google 시트 최대 액세스 제한이란 무엇입니까