Pythonに組み込まれたCSVリーダーを使用して閲覧するために開いているgzipped CSVファイルがあります。私は手動でそれらをディスクに最初に解凍することなくこれをしたいと思います。私は何とか非圧縮データにストリームを取得し、これをCSVリーダーに渡したいと思います。これはPythonで可能ですか?Pythonのgzippedファイルに対するcsvreaderの使用
答えて
gzip
モジュールを使用します
with gzip.open(filename) as f:
reader = csv.reader(f)
#...
'filename = 'tzaman.csv''の場合、ファイル' tzaman.csv'はアーカイブファイルであり、実際にはcsvファイルである別のファイル 'tzaman.csv'を含んでいます。 'abc.zip'という名前を付けると、zipである' abc.zip'が追加され、実際にはcsvというファイル 'abc.zip'が追加されます。何をすべきか? – Clayton
ファイルを圧縮しませんか? – Clayton
アーカイブを作成しません。 Gzipはストリームコンプレッサーだけです。ファイルの種類を特定するには、ファイル名を 'tzsman.csv.gz'とする必要があります。また、gzipライブラリはPython 2.6.8のwith文をサポートしていません。 – Doug
より完全なソリューション:私は上記のバージョンを試してみた
r = GZipCSVReader('my.csv')
for map in r:
for k,v in map:
print k,v
r.close()
Neat。あなたが '__enter _/__ exit __()'コンテキストマネージャメソッドを追加できれば、それを 'with'ステートメントと共に使用できるようにします。 – smci
:
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__()
今、あなたはこのようにそれを使用することができますがPython 3.3では "bytes"エラーのために読み書きができませんでした。しかし、いくつかの試行錯誤の後、私は以下のことを働かせることができました。 amohrが示唆するように、次の作品だけでなく、
import csv
import gzip
import io
with gzip.open("test.gz", "w") as file:
writer = csv.writer(io.TextIOWrapper(file, newline="", write_through=True))
writer.writerow([1, 2, 3])
writer.writerow([4, 5, 6])
with gzip.open("test.gz", "r") as file:
reader = csv.reader(io.TextIOWrapper(file, newline=""))
print(list(reader))
::たぶん、それはまた、他の人を助け、ここでネイティブのPythonのソリューションに加えて
import gzip, csv
with gzip.open("test.gz", "wt", newline="") as file:
writer = csv.writer(file)
writer.writerow([1, 2, 3])
writer.writerow([4, 5, 6])
with gzip.open("test.gz", "rt", newline="") as file:
reader = csv.reader(file)
print(list(reader))
@Gerenukそれは魅力のように動作します! – ZuLu
このソリューションは、いくつかの[ベンチマーク](http://ebnj.net/pythongzipbenchmarks/)に従って速いかもしれない 'io.BufferedReader'でも動作します。 'gzip.open'を' io.BufferedReader'で包み、 'io.BufferedReader(gzip.open(" test.gz "、 'r'))をファイルとして' –
とするだけで、使用するならTextIOWrapper/BufferedReaderをスキップすることができますgzip.open(mode = 'rt' – amohr
- 1. gzippedファイルへのランダムアクセス?
- 2. Azure Datalakeのgzippedファイルのサンプル
- 3. CSVファイルをCSVReaderなしでJTableにインポート
- 4. テキストを分割する方法Spark処理用のGzippedファイル
- 5. IO :: Uncompress :: Gunzipは、「連結」gzippedファイル内の最初の「元の」gzippedファイルの後に停止します。
- 6. gzippedファイルを解凍する方法
- 7. gzippedファイルの最後の行で検索
- 8. 別のディレクトリにあるgzippedファイルを解凍する方法
- 9. CsvReader次の機能
- 10. python - gzipped、base64dの文字列を拡張する方法
- 11. CsvReader DateTimeKind UTC
- 12. CSVReaderとInputStream
- 13. Lumenworks CsvReader例外
- 14. perl - gzippedファイルを作成するための最良の方法
- 15. Tclのgzippedファイルのトップn行だけを処理する
- 16. gzstreamをgzippedファイルで使用する場合のストリームの位置を保持する方法は?
- 17. Apacheのスパークは、クラスCSVReader
- 18. BYTES JavaでGZIPPEDファイルのサイズを取得する方法
- 19. Javaを使用してCSVReaderのtry-with-resourcesエラーを解決する方法6
- 20. gzippedファイルから内容を取得
- 21. Pythonはgzippedファイルがxmlかcsvかどうかを確認します
- 22. カールを使用するときにgzippedページを正しく扱うには?
- 23. gzippedファイルのContent-Lengthを調べる方法は?
- 24. 絶対パスと相対パスをPythonで使用する場合
- 25. tarとgzippedタールをgzippedタールにどのように組み合わせるのですか?
- 26. gzippedログファイルにテキストを追加する
- 27. GAE:サードパーティのサイトからbig gzippedファイルを定期的にインポートする
- 28. jQuery load gzippedスクリプト
- 29. キャッシングgzipped css
- 30. モジュールを指定するPythonのグローバル対の使用
、 'pandas'パッケージは[' read_csv'](HTTPSを持っています://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html)gzipをサポートしているリーダー – smci