在python 3中阅读gzipped csv文件

我在使用gzip和csv libs从gzip压缩的csv文件中读取时遇到问题.这是我得到的:

import gzip
import csv
import json

f = gzip.open(filename)
csvobj = csv.reader(f,delimiter = ',',quotechar="'")
for line in csvobj:
            ts = line[0]
            data_json = json.loads(line[1])

但这引发了一个例外:

 File "C:\Users\yaronol\workspace\raw_data_from_s3\s3_data_parser.py", line 64, in download_from_S3
    self.parse_dump_file(filename)
  File "C:\Users\yaronol\workspace\raw_data_from_s3\s3_data_parser.py", line 30, in parse_dump_file
    for line in csvobj:
_csv.Error: iterator should return strings, not bytes (did you open the file in text mode?)

用csv解压缩文件和打开工作正常.我也尝试解码文件文本以从字节转换为str …

我在这里错过了什么?

最佳答案
gzip.open的默认模式是rb,如果你想使用strs,你必须额外指定它:

f = gzip.open(filename, mode="rt")

OT:在with块中编写I / O操作是一种很好的做法:

with gzip.open(filename, mode="rt") as f:

转载注明原文:在python 3中阅读gzipped csv文件 - 代码日志