[英]Fast reading of gzip (text file) using io.BufferedReader in Python 3
我正在嘗試使用gzip模塊有效地讀入和解析壓縮文本文件。 此鏈接建議使用io.BufferedReader
包裝gzip文件對象,如下所示:
import gzip, io
gz = gzip.open(in_path, 'rb')
f = io.BufferedReader(gz)
for line in f.readlines():
# do stuff
gz.close()
要在Python 3中執行此操作,我認為必須使用mode='rb'
調用gzip
。 結果是該line
是二進制字符串。 但是,我需要line
作為text / ascii字符串。 有沒有更有效的方法使用BufferedReader
將文件作為文本字符串讀取,或者我必須在for循環內解碼line
?
您可以使用io.TextIOWrapper
將二進制流無縫地包裝到文本流中:
f = io.TextIOWrapper(gz)
或者正如@ShadowRanger指出的那樣,您只需在文本模式下打開gzip文件,這樣gzip
模塊就會為您應用io.TextIOWrapper
包裝:
for line in gzip.open(in_path, 'rt'):
# do stuff
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.