解析大型压缩xml文件,python

Mar*_*cin 2 python data-compression bzip

file  = BZ2File(SOME_FILE_PATH)
p = xml.parsers.expat.ParserCreate()
p.Parse(file)
Run Code Online (Sandbox Code Playgroud)

这是试图解析用bz2压缩的xml文件的代码.不幸的是它失败了一条消息:

TypeError: Parse() argument 1 must be string or read-only buffer, not bz2.BZ2File

有没有办法解析压缩的bz2 xml文件?

注意:p.Parse(file.read())这里不是一个选项.我想解析一个比可用内存大的文件,所以我需要一个流.

Nic*_*ick 5

只需使用p.ParseFile(文件)而不是p.Parse(文件).

Parse()接受一个字符串,ParseFile()接受一个文件句柄,并根据需要读取数据.

参考:http://docs.python.org/library/pyexpat.html#xml.parsers.expat.xmlparser.ParseFile