簡體   English   中英

在python 3中讀取gzip壓縮的csv文件

[英]reading gzipped csv file in python 3

我在讀取帶有gzipcsv庫的 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM