合并两个按此格式分块的文件XXXXX.csv.gz_1_2.tar&;XXXXX.csv.gz_2_2.tar(使用python或pyspark)
我有两个文件的格式是XXXX.csv.gz_1_2.tar&XXXX.csv.gz_2_2.tar,我的目标是合并这些文件,以便能够解压完整的文件以获得csv文件 你能帮我吗 我尝试使用linux cmd中的合并两个按此格式分块的文件XXXXX.csv.gz_1_2.tar&;XXXXX.csv.gz_2_2.tar(使用python或pyspark),python,linux,gzip,tar,apache-zeppelin,Python,Linux,Gzip,Tar,Apache Zeppelin,我有两个文件的格式是XXXX.csv.gz_1_2.tar&XXXX.csv.gz_2_2.tar,我的目标是合并这些文件,以便能够解压完整的文件以获得csv文件 你能帮我吗 我尝试使用linux cmd中的tar或cat函数导入操作系统,如: 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 " o
tar
或cat
函数导入操作系统,如:
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)
谢谢大家! 下面的代码(几乎)完全是从中窃取的,显然是使用了两个(或任意数量的)原始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文件的名称不会硬编码到源代码中)。您需要:1)untar/uncompress gz.tar以从两个文件中提取csv文件。(tar/gz是压缩和归档格式)2)连接两个csv文本文件,考虑是否存在任何标题行(在这种情况下,您显然需要删除第二个文件的标题行),然后(可选)3)对结果进行tar/压缩。在任何情况下,关于您的尝试,您都不能使用
cat
连接两个二进制文件(tar.gz文件是二进制的)。为什么[linux]
标记和C:
起始路径名?您可以很容易地修改“在python中将文件从一个tar添加到另一个tar”中的问题和答案中的代码这真的不是同一个问题,但谢谢你。