将.txt文件从.tar.gz文件复制到其他目录

时间:2018-04-11 07:57:12

标签: python python-3.x python-2.7

我正在尝试从压缩文件中复制所有.txt文件(此文件包含unknown_name_folders): .txt文件位置---> my_path的/?unknown_name_folder?/file.txt 我想做 - > my_path的/ file.txt的

我做了这个代码,但是我有这个错误:EOFError:压缩文件在达到流末尾标记之前结束。有什么想法吗?

file=my_path+"/"+fil
if file.endswith('.tar.gz'):

    tarf = tarfile.open(file, "r:gz")
    for info in tarf:

        if info.name.endswith('.txt'):
            print(info.name)

            tar = tarfile.open(file) #extracting
            tar.extractall()
            tar.close()    
            code=os.system('cp ' + my_path+'/'+info.name +' '+ file)

1 个答案:

答案 0 :(得分:2)

正如Paulo所说,你第二次打开tar文件时错过了“gz”标志。此外,您复制文件的目标是原始tarball - 我假设您希望它位于单独的目录中(此处为“targdir”)

您只需要提取一次内容,因此代码变为:

file=my_path+"/"+fil
targdir='dest'
if file.endswith('.tar.gz'):

    tarf = tarfile.open(file, "r:gz")
    tarf.extractall()
    for info in tarf:

        if info.name.endswith('.txt'):
            print(info.name)
            code=os.system('cp ' + info.name +' '+ targdir)

(编辑 - 你在“cp”命令中不需要'mypath' - 你已经将tarball解压缩到当前目录中,所以“info.name!是文件的完整路径”