Bỏ qua để đến Nội dung
Menu
Câu hỏi này đã bị gắn cờ
4 Trả lời
18412 Lượt xem

Odoo 11, uses Python3, which is good, but I wonder what is the best way to read/write to file-like objects.

Code which seemed to work like a charm in Py2.7, failed to execute in Py3, thus I wonder what could I be doing wrong...

I did changed import StringIO from io, but no luck. Anybody faced issues like this, any suggestions would be appreciated.

from io import StringIO

wb = xlwt.Workbook(encoding="UTF-8")
ws = wb.add_sheet('Sheet1'
....

fp = StringIO()
wb.save(fp)
fp.seek(0)
data = fp.read()
fp.close()


Error:

File "/usr/lib/python3.6/zipfile.py", line 1784, in _write_end_record
self.fp.write(endrec)
TypeError: string argument expected, got 'bytes'

Thanks

Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

Hi,

Instead of StringIO try with BytesIO

check this for more info : Error. string argument expected, got 'bytes'

Thanks

Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

In python3 The StringIO and cStringIO modules are gone. You can import io and use io.StringIO or io.BytesIO

eg:

import io
f = io.BytesIO(b"some initial binary data: \x00\x01")
f = io.StringIO("some initial text data")



Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

Hey Deep,

Please Try with ,

from io import BytesIO

fp = BytesIO()

For more ref :

> \https://stackoverflow.com/questions/37462075/confusing-about-stringio-cstringio-and-byteio

Thanks.

Ảnh đại diện
Huỷ bỏ
Bài viết liên quan Trả lời Lượt xem Hoạt động
2
thg 2 24
15036
1
thg 12 22
4717
2
thg 12 22
13993
2
thg 6 22
5852
2
thg 6 22
4370