2015-11-05 2 views
0

Я создал следующий скрипт для импорта файлов в мои модели django. Он отлично работает, но только при использовании python 3.4.Импорт CSV-скрипта-make python 2.7 совместимый

Как сменить этот скрипт, чтобы он работал на 2,7?

Спасибо,

Ошибка:

Traceback (most recent call last): 
    File "update_fromcsv.py", line 18, in <module> 
    l = list(csv.reader(open('test_data.csv', encoding='utf-8', errors='ignore'))) 
TypeError: 'errors' is an invalid keyword argument for this function 

Мой файл импорта:

import sys, os 
import django 

sys.path.append('/srv/apps/stashdDB/code') 
os.environ['DJANGO_SETTINGS_MODULE'] = 'stashdDB.settings' 

django.setup() 

import stashd.models as m 




import csv 

l = list(csv.reader(open('test_data.csv', encoding='utf-8', errors='ignore'))) 

Gender_CHOICES = { 
    'Male': 1, 
    'Female': 2, 
    'Unisex': 3, 
} 

Stock_CHOICES = { 
    'in stock': 1, 
    'low stock': 2, 
    'out of stock': 3, 
    'discountinued': 4 
} 

for i in l[1:]: 
     cat = m.Category.objects.get_or_create(category_name = i[4])[0] 
     prod = m.Product(
      name = i[0], 
      link = i[1], 
      description = i[6], 
      brand = i[7], 
      gender = Gender_CHOICES[i[8]] if i[8] in Gender_CHOICES else 3, 
      store = m.Store.objects.get_or_create(store_name = i[2])[0] 
      ) 
     prod.save() 
     var = m.Variation(
      product = prod, 
      variation = "default" 
      ) 
     var.save() 
     img = m.Image(
      variation = var, 
      image = i[5] 
      ) 
     img.save() 
     size = m.Size(
      variation = var 
      ) 
     size.save() 
     price = m.Price(
      variation = var, 
      price = float(i[3]) 
      ) 

и т.д ....

ответ

0
l = list(csv.reader(open('test_data.csv', 'rb'))) 
+0

Спасибо. Это сработало. Это ОЧЕНЬ медленно. Любая причина, по которой вы можете узнать через мой код? – Yian

+0

@Yian no. Это стандартное чтение из файла csv в 2.7. Из неполного перечисления вашей программы трудно понять, что замедляет ее. – LetzerWille

+0

Код работал для whitte, затем дал мне эту ошибку: 'return codecs.utf_8_decode (ввод, ошибки, True) UnicodeDecodeError: 'utf8' кодек не может декодировать байт 0xe9 в позиции 156: недопустимое продолжение byte' – Yian

Смежные вопросы