文件对象传递抛出了 csv 阅读器 Python 3.6

Roh*_*ani 3 python csv python-3.x

示例文件对象数据包含以下内容,

b'QmFyY29kZSxRdHkKQTIzMjMsMTAKQTIzMjQsMTUKNjUxMDA1OTUzMjkyNSwxMgpBMjMyNCwxCkEyMzI0LDEKQTIzMjMsMTAK'
Run Code Online (Sandbox Code Playgroud)

python 文件包含以下代码

string_data = BytesIO(base64.decodestring(csv_rec))
read_file = csv.reader(string_data, quotechar='"', delimiter=',')
next(read_file)
Run Code Online (Sandbox Code Playgroud)

当我在 python 中运行上面的代码时,出现以下异常

_csv.Error:迭代器应该返回字符串,而不是整数(您是否以文本模式打开文件?)

如何以文本模式打开字节数据?

9do*_*ogs 5

你快到了。事实上,csv.reader期望迭代器返回字符串(而不是字节)。BytesIO这样的迭代器由-的兄弟提供io.StringIO

from io import StringIO
csv_rec = b'QmFyY29kZSxRdHkKQTIzMjMsMTAKQTIzMjQsMTUKNjUxMDA1OTUzMjkyNSwxMgpBMjMyNCwxCkEyMzI0LDEKQTIzMjMsMTAK'

bytes_data = base64.decodestring(csv_rec)
# decode() method is used to decode bytes to string
string_data = StringIO(bytes_data.decode())
read_file = csv.reader(string_data, quotechar='"', delimiter=',')
next(read_file)
Run Code Online (Sandbox Code Playgroud)