чтение gzipped csv-файла в python 3
у меня проблемы с чтением из файла gzipped csv с gzip
и csv
libs. Вот что я получил:
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:Usersyaronolworkspaceraw_data_from_s3s3_data_parser.py", line 64, in download_from_S3
self.parse_dump_file(filename)
File "C:Usersyaronolworkspaceraw_data_from_s3s3_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?)
gunzipping файл и открытие, что с csv работает нормально. Я также попытался декодировать текст файла для преобразования из байтов в str...
что я пропустила?
2 ответов
режим по умолчанию для gzip.open
и rb
, Если вы хотите работать с strs, вы должны указать его дополнительно:
f = gzip.open(filename, mode="rt")
OT: рекомендуется писать операции ввода-вывода в блоке with:
with gzip.open(filename, mode="rt") as f:
вы открываете файл в двоичном режиме (по умолчанию для gzip
).
вместо:
import gzip
import csv
f = gzip.open(filename, mode='rt')
csvobj = csv.reader(f,delimiter = ',',quotechar="'")