我有一堆gzip的CSV文件,我想用Python內置的CSV閱讀器打開以供檢查。我想這樣做,而不必先手動將它們解壓縮到磁盤。我想我想以某種方式獲得未壓縮數據的流,並將其傳遞到CSV閱讀器。這在Python中可能嗎?在Python中對gzip文件使用csvreader
回答
使用gzip
模塊:
with gzip.open(filename) as f:
reader = csv.reader(f)
#...
如果'filename ='tzaman.csv',那麼它會生成文件'tzaman.csv',這是一個歸檔文件,並且包含另一個文件'tzaman.csv',它實際上是一個csv文件。如果我們將它命名爲'abc.zip',那麼它會添加一個zip文件'abc.zip'並且包含一個文件'abc.zip',它實際上是一個csv文件。該怎麼辦? – Clayton 2014-06-04 09:44:36
它不壓縮文件嗎? – Clayton 2014-06-04 09:57:08
它不創建存檔。 Gzip只是一個流式壓縮器。文件名應該被稱爲'tzsman.csv.gz'來幫助識別文件類型。另外,gzip庫不支持Python 2.6.8中的with語句。 – Doug 2014-07-28 02:23:21
一個更完整的解決方案:
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__()
現在你可以使用它像這樣:
r = GZipCSVReader('my.csv')
for map in r:
for k,v in map:
print k,v
r.close()
整潔。如果你可以添加'__enter _/__ exit __()'上下文管理器方法,所以它可以和'with'語句一起使用。 – smci 2018-02-06 23:11:07
我已經試過以上版本用於寫入和閱讀,並且由於「字節」錯誤,它在Python 3.3中不起作用。但是,經過一些試驗和錯誤,我可以得到以下工作。也許這也幫助他人:
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))
由於amohr建議,以下的作品,以及:
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 2015-01-02 18:08:35
這個解決方案也可以用'io.BufferedReader',根據一些[基準](http://ebnj.net/pythongzipbenchmarks/)可能會更快。簡單地用'io.BufferedReader'將'gzip.open'封裝爲'使用io.BufferedReader(gzip.open(「test.gz」,'r'))作爲文件:' – 2015-05-05 20:18:36
如果您使用的話,您可以跳過TextIOWrapper/BufferedReader gzip.open(mode ='rt' – amohr 2016-01-23 00:31:19
- 1. 在Python中使用gzip文件
- 2. 用python修改gzip文件
- 3. 在python中打開gzip文件Apache Beam
- 4. 如何使用GZIP文件在Asp.net中?
- 5. 我可以在Python中使用Popen打開的gzip文件嗎?
- 6. Python csvreader單獨行
- 7. 如何使用CSVReader?
- 8. 如何測試gzip的文件目錄並使用zcat在Python中解壓縮gzip文件?
- 9. 使用GZIP下載文件
- 10. 使用crontab來gzip文件
- 11. 在Python中使用GZIP模塊
- 12. 讀取大的gzip文件在Python
- 13. 在本地使用gzip文件
- 14. gzip在cython文件中
- 15. 如何使用golang的「compress/gzip」軟件包來gzip文件?
- 16. 在.htaccess文件中啓用gzip壓縮
- 17. 使用MapReduce API使用Gzip壓縮在HDFS中複製文件
- 18. 更新CSV頭使用CsvReader
- 19. 使用python gzip模塊解壓文件的一部分
- 20. 使用Python提取(不讀取)一個大的gzip文件
- 21. 如何使用Python GZip模塊壓縮文件夾?
- 22. 無法使用Lumenworks CsvReader解析CSV文件的最後一行
- 23. 使用Fast CsvReader讀取CSV文件時不帶引號字段
- 24. Python Gzip - 實時追加到文件
- 25. CSVReader不檢查整個文件
- 26. 在Python中使用文件?
- 27. Python:使用Popen()與文件對象在Linux中寫入文件
- 28. 對文件使用grep在Python
- 29. 使用Spring引導服務gzip文件
- 30. 關於使用gzip文件查找
在這裏除了原生的Python的解決方案,'pandas'包有['read_csv'](HTTPS ://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html)gzip支持的閱讀器 – smci 2018-02-06 23:51:46