[英]reading gzipped csv file in python 3
我在讀取帶有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 打開它工作正常。 我也試過解碼文件文本以從字節轉換為字符串......
我在這里缺少什么?
gzip.open
默認模式是rb
,如果你想使用 strs,你必須額外指定它:
f = gzip.open(filename, mode="rt")
OT:在 with 塊中編寫 I/O 操作是一個很好的做法:
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="'")
太晚了,你可以在python中使用datatable包
import datatable as dt
df = dt.fread(filename)
df.head()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.