Using csvreader against a gzipped file in Python

前端 未结 3 874
無奈伤痛
無奈伤痛 2020-12-25 11:35

I have a bunch of gzipped CSV files that I\'d like to open for inspection using Python\'s built in CSV reader. I\'d like to do this without having first to manually unzip t

3条回答
  •  庸人自扰
    2020-12-25 11:55

    a more complete solution:

    import csv, gzip
    class GZipCSVReader:
        def __init__(self, filename):
            self.gzfile = gzip.open(filename)
            self.reader = csv.DictReader(self.gzfile)
        def next(self):
            return self.reader.next()
        def close(self):
            self.gzfile.close()
        def __iter__(self):
            return self.reader.__iter__()
    

    now you can use it like this:

    r = GZipCSVReader('my.csv')
    for map in r:
        for k,v in map:
            print k,v
    r.close()
    

    EDIT: following the below comment, how about a simpler approach:

    def gzipped_csv(filename):
        with gzip.open(filename) as f:
            r = csv.DictReader(f)
            for row in r:
                yield row
    

    which let's you then

    for row in gzipped_csv(filename):
        for k, v in row:
            print(k, v)
    

提交回复
热议问题