Python 3:从tar.gz存档中提取文件

beppe95

我目前正在使用语义丰富的Wikipedia

该资源位于7.5 GB的tar.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文件名中的unichar所致,但是现在我看到每个文件都包含在其中)。

因此,我计划使用一些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分钟之后,我只能处理100 GB中的500MB。

Akhil pathania

我建议您使用7zip进行提取。您可以从python启动7zip提取,然后并排提取时,您可以读取提取的文件。这样可以节省很多时间。您可以实现使用线程。

其次,在给Windows路径时,不要使用斜杠。您可以\\代替使用/

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从python中的tar存档中提取压缩的gz文件

Python:从tar.gz中提取具有模式的特定文件,而无需提取完整文件

如何从大型tar.gz存档中提取单个文件夹?

如何从tar存档中提取特定文件?

从Python3中的zip存档中提取特定文件夹的内容

如何在python中提取gz文件

使用python3中的tarfile模块从tar中提取文本文件

按大小降序从 Tar 存档中提取 3 个最小的文件

从.tar.bz2存档中的文件中提取行

仅使用其URL从在线tar存档中提取文件

用bash从tar.gz中提取1个文件

从tar.gz中提取特定文件夹

如何从tar.gz中提取特定文件

从非常大的tar.gz中提取许多文件

提取tar.gz文件将返回“看起来不像tar存档”。

如何从S3中的zip存档中提取文件

发出使分割的tar.gz文件重新组合和提取的问题。不是有效的.gz存档

从网站将.tar.gz文件的内容读取到python 3.x对象中

在不提取的情况下在python中读取* .tar.gz文件

从远程ssh服务器上的tar存档中提取某些文件

Python3使用tar文件中的csv文件

从ftp服务器的tar.gz文件中提取xml文件列表

在Python中读取.tar.gz文件

在Google-Colab中提取tar.gz文件时遇到问题

在 .tar 中的 .gz 中提取文件而不解压缩这两个

提取.gz文件中的.TAR文件

从python 3中的文本文件中提取数据

使用MacOS终端从.tar.xz存档中提取带有文件扩展名的特定文件

使用Ansible Unarchive从tar存档中提取目录