CSV应该返回字符串,而不是字节错误

时间:2016-05-01 20:06:20

标签: python python-3.x csv zipfile

我正在尝试从与Python脚本不在同一目录中的目录中读取CSV文件。

此外,CSV文件存储在具有完全相同名称的ZIP文件夹中(唯一的区别是一个以.zip结尾,另一个是.csv)。

目前我正在使用Python的std::mapzipfile库来打开并从文件中获取数据,但是我收到错误:

csv

我的代码:

Traceback (most recent call last):   File "write_pricing_data.py", line 13, in <module>
    for row in reader:
_csv.Error: iterator should return strings, not bytes (did you open the file in text mode?)

如何解决此错误?

1 个答案:

答案 0 :(得分:1)

这有点像kludge,我确信有一种更好的方法(这恰好在我现在就没有了)。如果您没有嵌入新行,则可以使用:

import zipfile, csv

zf = zipfile.ZipFile('testing.csv.zip')
with zf.open('testing.csv', 'r') as fin:
    # Create a generator of decoded lines for input to csv.reader
    # (the csv module is only really happy with ASCII input anyway...)
    lines = (line.decode('ascii') for line in fin)
    for row in csv.reader(lines):
        print(row)