Zum Inhalt springen
Menü
Sie müssen registriert sein, um mit der Community zu interagieren.
Diese Frage wurde gekennzeichnet
5 Antworten
12420 Ansichten

Code is 

def import_file(self): 

 file = io.BytesIO(base64.decodestring(self.file)) 

 

 reader = csv.reader(file, delimiter=',') 


 csv.field_size_limit(sys.maxsize) 

 skip_header = True 

 for row in reader:



Error is 


File "/opt/odoo13/odoo-custom-addons/import_product_image/models/import_image.py", line 52, in import_file
    for row in reader:
_csv.Error: iterator should return strings, not bytes (did you open the file in text mode?)
Avatar
Verwerfen

do you need to import images from csv file?

Autor

yes its your module converting into v13 from v10

Beste Antwort

Hi,

Try the following code which import image from csv file, in the following code image url is given in csv file, you can change the code accordingly.

file = base64.b64decode(self.binary_field_name)
file_string = file.decode('utf-8')
file_string = file_string.split('\n')
http = urllib3.PoolManager(cert_reqs='CERT_REQUIRED',
ca_certs=certifi.where())
if "http://" in file_item.split(",")[0] or "https://" in file_item.split(",")[0]:
link = file_item.split(",")[0]
image_response = http.request('GET', link)
image_thumbnail = base64.b64encode(image_response.data)

Regards

Avatar
Verwerfen
Beste Antwort


Try this

    @api.multi
def read_file(self):
if self.attachment:
wb = open_workbook(file_contents = base64.decodestring(self.attachment))
for s in wb.sheets():
values = []
first_row = [] # Header
for col in range(s.ncols):
first_row.append(s.cell_value(0,col) )
data =[]
for row in range(1, s.nrows):
elm = {}
for col in range(s.ncols):
elm[first_row[col]]=s.cell_value(row,col)
data.append(elm)
# print data


Avatar
Verwerfen
Autor

my code is csv base...

Verknüpfte Beiträge Antworten Ansichten Aktivität
1
Juli 25
2511
0
Mai 23
2274
3
März 25
23842
1
Nov. 22
2177
1
Mai 22
5692