2012-05-12 3 views
32

파일을 완전히 압축하지 않고 python을 사용하여 gz 압축 텍스트 파일의 행을 읽기 쉽습니까? 나는 aroud 200mb 인 text.gz 파일을 가지고있다. 추출하면 7.4gb가됩니다. 그리고 이것이 내가 읽어야 할 유일한 파일은 아닙니다. 전체 과정에서 10 개의 파일을 읽어야합니다. 이것은 순차적 인 일이긴하지만, 전체 정보를 빼 먹지 않고 그것을하는 것이 현명 할 것이라고 생각합니다. 나는 그것이 가능하다는 것도 모른다. 어떻게 파이썬을 사용하여 수행 할 수 있습니까? 텍스트 파일을 한 줄씩 읽어야합니다.python : 압축 된 텍스트 파일의 행을 읽으십시오.

답변

38

파이썬에서 표준 gzip 모듈을 사용할 수 있습니다. 파일을 다른 파일로 열고 해당 행을 읽으려면 다음을 사용하십시오.

gzip.open('myfile.gz') 

여기

더 많은 정보 : Python gzip module

+0

out of curiosity는 전체 파일을 메모리에로드합니까? 또는 필요에 따라 선을로드 할만큼 똑똑합니까? –

+1

@Sachin_ruk 방금 열어 본 파일을로드하지 않습니다. 파일에서 실제로 데이터를로드하려면'''f.readline()''을 한 번에 한 줄씩 읽어야합니다. 또는''f.readlines (N)''여기서''N''은 읽고 자하는 행의 수입니다. – Tom

22

gzip.GzipFile 사용 : 1

import gzip 

with gzip.open('input.gz','r') as f: 
    for line in f: 
     print('got line', line) 

참고 : python3에 대해 당신이 가지고있는 파일을 지정 바이너리 읽기에 'r' 기본값으로, 'rt'에서 열, 또는 수 그렇지 않으면 line.decode(...)을 사용하십시오.

참고 : gzip.open(filename, mode)gzip.GzipFile(filename, mode)의 별명입니다. 압축되지 않은 파일을 여는 데 사용되는 with open(...) as f:과 비슷한 모양의 전자를 선호합니다.

+18

python3의 경우 'rt'에 열 파일을 지정해야합니다. 'r'은 기본적으로 이진 읽기입니다. – kap

+1

또는'line.decode()'를 사용하십시오. – dmeu

관련 문제