こんにちは。
Python で gzip 圧縮されたテキストファイルを書き出しました1。
今回例は CSV データを中身としました(csv モジュール利用)。
$ ./write_csv_gzfile.py temp.csv.gz
$ gzip -dc temp.csv.gz
a,b
1,2
3,4
write_csv_gzfile.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import io, csv, gzip, sys
from pathlib import Path
def writeCSV(f, newline='\n'):
dat = [{'a': 1, 'b': 2}, {'a': 3, 'b': 4}]
w = csv.DictWriter(f, dat[0].keys(), lineterminator=newline)
w.writeheader()
w.writerows(dat)
buffer = io.BytesIO()
with gzip.GzipFile(fileobj=buffer, mode='wb') as compressed:
with io.TextIOWrapper(compressed, encoding='utf-8', newline='\n') as wrapper:
writeCSV(wrapper)
p = Path(sys.argv[1])
p.write_bytes(buffer.getvalue())
-
参考:"Using csv.DictWriter to output an in-memory gzipped csv file?" (Stack Overflow) ↩