合并以 XXXXX.csv.gz_1_2.tar 和 XXXXX.csv.gz_2_2.tar 格式分块的两个文件(使用 python 或 pyspark)
Posted
技术标签:
【中文标题】合并以 XXXXX.csv.gz_1_2.tar 和 XXXXX.csv.gz_2_2.tar 格式分块的两个文件(使用 python 或 pyspark)【英文标题】:Combine two files chunked in this format XXXXX.csv.gz_1_2.tar & XXXXX.csv.gz_2_2.tar (with python or pyspark) 【发布时间】:2020-02-18 09:52:49 【问题描述】:我有两个格式为XXXX.csv.gz_1_2.tar & XXXX.csv.gz_2_2.tar
的文件,我的目标是合并这些文件以便能够解压缩完整的文件以获取 csv 文件。
你能帮帮我吗?
我尝试使用 linux cmd 中的 tar
或 cat
函数和 import os 类似:
import os
cat="cat C:/Users/AAAA/XXXX.csv.gz_1_2.tar C:/Users/AAAA/XXXX.csv.gz_2_2.tar > C:/Users/AAAA/XXXX.csv.gz.tar "
os.system(cat)
谢谢!
【问题讨论】:
您需要:1) 解压/解压缩 gz.tar 以从两个文件中提取 csv 文件。 (tar/gz 是压缩和存档格式)2)连接两个 csv 文本文件,考虑是否存在任何标题行(在这种情况下,您显然需要删除第二个文件的标题行)然后(可选)3 ) tar/压缩结果。 .无论如何,关于您的尝试,您不能使用cat
连接两个二进制文件(tar.gz 文件是二进制文件)
为什么要使用[linux]
标签和C:
起始路径名?
Add files from one tar into another tar in python的可能重复
您可以非常轻松地调整问题中的代码和***.com/questions/17616340/…中的答案
"在 python 中将文件从一个 tar 添加到另一个 tar" 这确实不是同一个问题,但谢谢。
【参考方案1】:
下面的代码(几乎)完全是从Add files from one tar into another tar in python 窃取的,显然是使用了两个(或任意数量)原始 tar 文件。
import tarfile
old_tars = ("….tar", "….tar.gz", "….tar.xz", …)
with tarfile.open("new.tar", "w") as new_tar:
for old_tar in (tarfile.open(tar_name, "r") for tar_name in old_tars):
for member in old_tar.getmembers():
new_tar.addfile(member, old_tar.extractfile(member.name))
old_tar.close()
(当然,在现实世界的程序中,tar 文件的名称不会不被硬编码到源代码中)。
【讨论】:
以上是关于合并以 XXXXX.csv.gz_1_2.tar 和 XXXXX.csv.gz_2_2.tar 格式分块的两个文件(使用 python 或 pyspark)的主要内容,如果未能解决你的问题,请参考以下文章
linux安装 redis(redis-3.0.2.tar.gz) 和 mongodb(mongodb-linux-x86_64-rhel62-4.0.0)