问题标签 [tarfile]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
938 浏览

python - python tarfile 将 tar 写入管道

我想创建一个 tar 文件并将其通过管道传输到 http 上传。

但是,似乎 python tarfile 模块执行了查找,这使得无法通过管道传输到下一个进程。

这是代码

'named_pipe' 是由 mkfifo 命令创建的命名管道文件,当我运行它并在另一个终端中 cat 命名管道时,我得到了错误

有任何想法吗?

0 投票
1 回答
9730 浏览

python - tarfile.ReadError:文件无法成功打开

我有以下代码可以打开一个 .tgz 文件,但我得到了tarfile.ReadError: file could not be open successfully

我可以使用“tar -xvzf file.tgz”提取此存档。显然它与文件的创建方式有关,因为当我使用 比较两个不同的 .tgz 文件时file,我看到了不同;file2.tgz 与这段代码一起工作。

有什么想法为什么会发生这种情况,或者我如何修改 file.tgz 以使其与 tarfile 一起使用?

注意:我使用的是 Python 2.7.5。

0 投票
2 回答
8866 浏览

python - Python 中的 Tarfile:我可以通过仅提取部分数据来更有效地解压吗?

我从 USGS 订购了一大堆陆地卫星场景,它们以 tar.gz 档案的形式提供。我正在编写一个简单的 python 脚本来解压它们。每个档案包含 15 个 60-120 mb 大小的 tiff 图像,总计超过 2 GB。我可以使用以下代码轻松提取整个存档:

我实际上只需要这 15 个 tiff 中的 6 个,在标题中标识为“乐队”。这些是一些较大的文件,因此它们加起来约占数据的一半。所以,我想我可以通过如下修改代码来加快这个过程:

但是,向两个脚本添加一个计时器显示第二个脚本没有显着的效率提升(在我的系统上,两个脚本都在一个场景中运行大约一分钟)。虽然提取速度有点快,但似乎这种增益被确定首先需要提取哪些文件所花费的时间所抵消。

问题是,这种权衡是我正在做的事情所固有的,还是只是我的代码效率低下的结果?我对 python 比较陌生,今天才发现 tarfile,所以如果后者是真的,我不会感到惊讶,但我还没有找到任何有效提取档案的一部分的建议。

谢谢!

0 投票
1 回答
4574 浏览

python - tarfile 问题和无效标头错误

我有一个来自http://download.geofabrik.de/africa/botswana-latest.osm.bz2的 tar 文件

当我将文件保存到磁盘并使用 Pythontarfile库提取 .osm 文件时,我收到一个无效的标头错误。

有没有办法解决这个错误?

7zip 可以毫无问题地打开文件并提取数据,但我需要编写数据提取脚本。

0 投票
1 回答
127 浏览

python - 如何禁用创建硬链接

使用 python 的 tarfile 模块,有没有办法指定 tar 的 Q 选项的等效项(注意:特定于 Haiku)?

目前代码基本上是:

0 投票
1 回答
137 浏览

python - 我可以在哪里存储从 Python 包中提取的程序文件?

我编写了一个hwrt带有model.tar文件的 Python 包。文件本身和内容都不应该打扰用户(他们可以查看它,这不是秘密 - 但他们不需要它)。

我需要处理该档案中的文件。为此,我提取内容并使用它们:

这行得通。但是,我发现这种方法存在两个问题:

  1. model.tar每次都被提取。
  2. 包含的文件被放置在用户可能不期望的当前工作目录中。

为了解决问题(2),在我看来,在其中创建一个临时文件夹tempfile.gettempdir()将是最干净的解决方案。但是,我不确定这是否是应该这样做的地方。

是否有其他存档格式可以让我直接访问存档的内容?安装后,是否有一个目录可以放置我的 Python 包(适用于所有用户)的文件?

0 投票
0 回答
1795 浏览

python - Python tarfile 错误 - gzip 模块不可用

我有以下代码

带有扩展名archives的文件列表在哪里。.tar.gz虽然它在尝试使用tarfile.CompressionError: gzip module is not available. 这很有趣,因为模块 gzip.py 位于/usr/lib/python2.6.

当我尝试命令file <name_of_archive>时,它返回:<name_of_archive>: gzip compressed data, from Unix.

我该如何解决这个问题?

谢谢

0 投票
1 回答
2114 浏览

python - Python tarfile 未创建有效的 .tar.gz 文件

我有一个 Django 应用程序,它创建一个 .tar.gz 文件以供下载。在本地,我在我的开发机器 Python 2.7 和远程开发服务器 Python 2.6.6 上运行。当我下载文件时,我可以通过 Mac Finder / 命令行打开并查看内容。但是,Python 2.7 不喜欢在我的远程开发服务器上创建的 .tar.gz 文件……我需要将这些文件上传到使用 Python 解压/解析档案的站点。我怎样才能调试出了什么问题?在 Python 外壳中:

这个 SO question,我也尝试gzip -t对远程文件运行,但没有输出(我相信这意味着文件是好的)。从this other SO question,我跑了file myTestFile_remote.tar.gz,我相信输出显示正确的文件格式:

我不太确定我还能尝试什么。似乎抛出异常是因为我的 tarfile 有self.offset == 0,但我不知道这意味着什么,而且我不明白如何创建 tarfile 以免发生这种情况。欢迎提出建议...

不确定什么代码在这里有用。我创建和返回 tarfile 的代码:

------ 更新 ------ 根据这篇 SO 帖子,我还验证了远程文件是一个 tar.gz 文件,tar -zxvf myTestFile_remote.tar.gz从命令行使用。该文件提取得很好。

0 投票
0 回答
103 浏览

python - Python:如何在压缩文件中加载特定压缩文件的缓冲区对象?

我有一个 tar.bz2,里面有一个特定的 .gz 文件列表。在 tar.bz2 中搜索并找到 .gz 文件后,我想将这些特定的 .gz 文件加载到缓冲区中。然后我想解压缩那些加载的 .gz 文件。最后,我想将解压后的 .gz 文件加载为 .mat 文件。我想这样做而不必生成外部文件。

注意:.gz 压缩文件只是一个 .mat 文件,而不是压缩文件的进一步列表。

所以来说明压缩架构:big_file.tar.bz2 -> cat.gz, dog.gz, hello.gz, hello1.gz hello.gz -> hello(单个.mat文件)

tar.bz2 中的匹配文件名是 'hello',就像在标记为 'hello.gz'、hello1.gz' 等的文件中一样。

我当前的问题是在 tar_bz2.extractfile() 之后无法正确获取缓冲区格式。

片段中的错误是在 loadmat() 作为文件末尾的寻找问题,但我确信我的问题的根源在 tar_bz2.extractfile() 之后开始。

这是我到目前为止所拥有的:

0 投票
2 回答
8322 浏览

python - 如何使用 python tarfile 模块将文件附加到 tar 文件?

我想将一个文件附加到 tar 文件中。例如,中的文件test.tar.gza.png, b.png, c.png. 我有一个名为 的新 png 文件a.png,我想附加到a.pngtest.tar.gz文件并覆盖a.png. test.tar.gz我的代码:

然后,所有文件都test.tar.gz消失了,但是a.png,如果我将代码更改为:

程序崩溃,错误日志:

我的错误是什么,我该怎么办?

更新。从文档中可以看出,gz文件无法以a模式打开。如果是这样,在现有存档中添加或更新文件的最佳方法是什么?