我目前正在与Semantically Enriched Wikipedia合作
该资源位于7.5 GBtar.gz归档文件中,其中的每个文件都是XML,其模式为:
<text>
Plain text
</text>
<annotation>
Annotation for plain text
</annotation>
当前的任务是提取每个文件,然后解析标记中的内容
我做的第一件事是使用tarfile模块及其extractall()方法,但在提取过程中我遇到了以下错误:
OSError: [Errno 22] Invalid argument: '.\\sew_conservative\\wiki384\\Live_%3F%21*%40_Like_a_Suicide.xml'
虽然它的一部分被正确提取(我认为错误是由于xml文件名中的unicode字符造成的,但我现在看到每个文件都有它)
因此,我计划使用API的一些方法和下面的代码处理归档文件中的每个文件
不幸的是,封装每个文件的TarInfo对象不允许访问文件内容,并且逐个文件的提取需要花费太多时间
def parse_sew():
sew_path = Path("C:/Users/beppe/Desktop/Tesi/Semantically Enriched Wikipedia/sew_conservative.tar.gz")
with tarfile.open(sew_path, mode='r') as t:
for item in t:
// extraction
解析和使用XML文件的内容时必须进行提取,还是可以读取归档内容(动态读取,不提取任何内容),然后解析内容
更新:我正在通过tar-xvzf filename.tar.gz命令提取文件,一切都很顺利,但15分钟后我只能处理100GB中的500MB
我建议您使用7zip进行提取。您可以从python中启动7zip提取,然后当它并排提取时,您可以读取提取的文件。这将节省相当多的时间。您可以使用线程来实现
其次,在给出windows路径时不要使用前斜杠。您可以使用
\\
代替/
您还可以按如下方式尝试使用shutil
相关问题 更多 >
编程相关推荐