я объявить BytesIO()
объект, чтобы написать через csv.writer
как:Невозможно записать байт типа строки с использованием csv.writer в Python3
lines = ["abc", "def", "ghi"]
writer_file = io.BytesIO()
writer = csv.writer(writer_file)
writer.writerow(str(lines).encode("utf-8"))
но я получаю ошибку:
TypeError: a bytes-like object is required, not 'str'
но когда я проверьте типы, я получаю объект bytes
.
In [14]: type(str(lines).encode("utf-8"))
Out[14]: bytes
Что это значит?
Примечание: я не могу использовать io.StringIO()
, чтобы поддерживать этот код для python2. (Исходя мои предположения об этом: different io types for csv in python 2 and 3)
Вы можете использовать 'io.StringIO 'и по-прежнему совместимы с python2 ... Вы бы использовали строки unicode на python3, но никаких причин, по которым это могло бы повлиять на результат. Обе версии python будут использовать свой класс' str'. Другим вариантом является просто использовать всегда Unicode ... В любом случае, все равно – JBernardo
@JBernardo http://stackoverflow.com/questions/13120127/how-can-i-use-io-stringio-with-the-csv-module – goelakash