Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 分割后的gz文件无效_Python_Gzip - Fatal编程技术网

Python 分割后的gz文件无效

Python 分割后的gz文件无效,python,gzip,Python,Gzip,我有一个500MB的gz文件,我将其拆分如下 split -b 100m "file.gz" "file1.gz.part-" with gzip.open(filename) as f: for line in f: 拆分后,将获得以下文件 file1.gz.part-aa file1.gz.part-ab file1.gz.part-ac file1.gz.part-ad file1.gz.part-ae 我尝试使用gzip在gzip文件中迭代对象,如下所示 split

我有一个500MB的gz文件,我将其拆分如下

split -b 100m "file.gz" "file1.gz.part-"
 with gzip.open(filename) as f:
      for line in f:
拆分后,将获得以下文件

file1.gz.part-aa
file1.gz.part-ab
file1.gz.part-ac
file1.gz.part-ad
file1.gz.part-ae
我尝试使用gzip在gzip文件中迭代对象,如下所示

split -b 100m "file.gz" "file1.gz.part-"
 with gzip.open(filename) as f:
      for line in f:
这适用于
file1.gz.aa部分
,但我得到的其他4个部分

不是gzip文件错误


gzip文件具有将其标识为gzip文件的头文件。拆分后,只有第一个文件具有此标头。在处理之前重新加入文件。

gzip文件具有将其标识为gzip文件的头。拆分后,只有第一个文件具有此标头。在处理之前重新加入文件。

您可以在
gzip
之前
split

split -l 300000 "file.txt" "tweets1.part-"
      ^ every 300000 lines
请注意,
split
的输入不是一个
*.gz
文件,而是原始的面向行的文件

然后分别对每个部分进行
gzip

gzip tweets1.part-*
这也将删除部件(有一个
gzip
选项来保留它们)


在python中,您现在可以分别使用每个部分。

您可以在
gzip
之前
split

split -l 300000 "file.txt" "tweets1.part-"
      ^ every 300000 lines
请注意,
split
的输入不是一个
*.gz
文件,而是原始的面向行的文件

然后分别对每个部分进行
gzip

gzip tweets1.part-*
这也将删除部件(有一个
gzip
选项来保留它们)



在python中,您现在可以单独使用每个部分。

我需要单独处理它们。。有没有办法将报头拷贝到每个文件?即使是这样,你仍然在流中间的某个地方压缩了。你不会对结果感到满意。在这种情况下,我们是否可以根据行数而不是大小分割文件,并将标题复制到每个文件?为什么不首先生成多个文件?因为在我的情况下,生成gz文件是非常耗时的步骤,我需要单独处理它们。。有没有办法将报头拷贝到每个文件?即使是这样,你仍然在流中间的某个地方压缩了。您不会对结果感到满意。在这种情况下,我们是否可以根据行数而不是大小拆分文件,并将标题复制到每个文件中?为什么不首先生成多个文件?因为在我的情况下,生成gz文件是非常耗时的步骤,仅用于测试、连接(使用
cat
)将文件返回到一个,然后查看是否可以从命令行解压它们。如果这样做有效,那么它们就不会损坏,这是一个实现错误。否则,由于某些无法解释的原因,会出现损坏。请重新查看我的答案,我现在已经编辑了它。您可以将它们连接到(shell)子流程中,并从管道读取其输出。您能否详细说明
从子流程导入Popen,管道
p=Popen('cat file1.gz*',close\u fds=True,shell=True,stdout=pipe)
加上类似于
xxx=p.stdin.read()
的内容仅用于测试,将文件连接(使用
cat
)到一个文件中,然后查看是否可以从命令行解压它们。如果这样做有效,那么它们就不会损坏,这是一个实现错误。否则,由于某些无法解释的原因,会出现损坏。请重新查看我的答案,我现在已经编辑了它。您可以将它们连接到(shell)子流程中,并从管道读取其输出。您能否详细说明
从子流程导入Popen,管道
p=Popen('cat file1.gz*',close\u fds=True,shell=True,stdout=pipe)
加上类似于
xxx=p.stdin.read()
首先,我有file.gz可用。。我只想迭代分割文件中的对象。小捕获。。这样做之后,我无法迭代json对象,它是我文件的基本单元。很好:(这是因为JSON对象跨越所有文件,所以按行拆分会破坏JSON语法。至少我们尝试过!要正确拆分JSON对象,您需要对其进行解析并将其分块呈现,这比在注释中讨论的要困难得多。首先,我有file.gz可用..我想在sp中迭代对象litted files only.small catch..在执行此操作后,不知何故我无法迭代json对象,它是我文件的基本单元..很好:(这是因为JSON对象跨越所有文件,所以按行拆分会破坏JSON语法。至少我们尝试过!要正确拆分JSON对象,您需要对其进行解析并将其分块呈现,这比在注释中讨论要困难得多。