我在使用gzip
和csv
库从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: