2015-09-22 47 views
-1

我有一些压缩文本文件,我尝试使用glob(首先搜索文件)和gzip模块进行读取。我需要跳过每个文件的标题信息。我可以在每个循环的开始处使用条件语句来完成此操作。有没有更好的方法可以用来忽略标题信息。Python:读取gzip文件并跳过标题信息

我的文件是这样的:

Name :abc_201509220101.txt.gzip 
Content : 
FILE_TIME|COL1|COL2|COL3|COL4|COL5|COL6|... 
201509201511|1|10|ABC|XXX|AAA|100|... 
201509201512|2|10|ABC|XXX|AAA|100|... 
201509201511|4|10|ABC|XXX|AAA|101|... 
... 

我需要跳过读标题注释。欢迎任何更快的方法。

CODE:

在glob.glob文件( '/ * GZ'): FH = gzip.open(文件, 'RB') 用于FH行: 如果 “FILE_TIME” 在行: 继续

感谢,

+0

请定义“更快”。速度提高1%是否足够好? – Evert

+1

您可能还想显示您正在使用的代码以及您遇到问题的位置。 – Evert

+0

numpy.loadtxt,numpy.genfromtxt或pandas I/O例程可以派上用场;他们经常有一个skipheader关键字。您可能只需要将文件包装成各种类型的gunzip对象(或者可能有一个I/O例程自己接受gzip文件)。 – Evert

回答

0

您可以使用Python的

seek()
功能。它类似于C中的fseek()。它接受一个偏移值并将文件的当前位置设置为偏移量。

重要的要求是你应该知道标题的大小以字节为单位。

file.seek(size_of_header_in_bytes,0)
1

如果你知道,第一行是你总是想跳过的东西,那么你可以在循环之前根本fh.readline()。如果你需要检查它是否是一个标题行,那么根据定义你需要一个条件或一些等价的东西。