2015-11-05 69 views
0

我創建了以下腳本來將文件導入到我的django模型中。它工作正常,但只有在使用python 3.4時。導入CSV腳本 - 使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。它是2.7中從csv文件讀取的標準。從你的程序的不完整列表中很難看出它的下降速度。 – LetzerWille

+0

該代碼爲一個whilte工作,然後給我這個錯誤:'返回codecs.utf_8_decode(輸入,錯誤,真) UnicodeDecodeError:'utf8'編解碼器無法解碼位置156字節0xe9:無效連續字節' – Yian