2015-05-19 9 views
5

में gzipped csv फ़ाइल को पढ़ने में मुझे gzip और csv libs के साथ एक gzipped csv फ़ाइल से पढ़ने में समस्याएं आ रही हैं। यहाँ मैं क्या मिला है:पायथन 3

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?) 

फ़ाइल और उद्घाटन gunzipping साथ कि सीएसवी ठीक काम करता है। मैंने बाइट्स से str में कनवर्ट करने के लिए फ़ाइल टेक्स्ट को डीकोड करने का भी प्रयास किया है ...

मुझे यहां क्या याद आ रही है?

उत्तर

10

डिफ़ॉल्ट मोड, rb है अगर आप एसटीआर के साथ काम करना चाहते हैं, तो आप इसे अतिरिक्त निर्दिष्ट करने के लिए है:

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

OT: यह एक है ब्लॉक के साथ I/O संचालन लिखने के लिए अच्छा अभ्यास:

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

यूप, सही। धन्यवाद – WeaselFox

3

आप फ़ाइल को बाइनरी मोड (which is the default for gzip) में खोल रहे हैं।

बजाय का प्रयास करें:

gzip.open के लिए
import gzip 
import csv 
f = gzip.open(filename, mode='rt') 
csvobj = csv.reader(f,delimiter = ',',quotechar="'")