Python 将.txt文件从.tar.gz文件复制到其他目录
我正在尝试从压缩文件复制所有.txt文件(此文件具有未知的\u名称\u文件夹): .txt文件位置-->我的路径/?未知\u名称\u文件夹?/file.txt 我想做-->我的路径/file.txt 我编写了这段代码,但我有一个错误:EOFError:压缩文件在到达流结束标记之前结束。有什么想法吗Python 将.txt文件从.tar.gz文件复制到其他目录,python,python-3.x,python-2.7,Python,Python 3.x,Python 2.7,我正在尝试从压缩文件复制所有.txt文件(此文件具有未知的\u名称\u文件夹): .txt文件位置-->我的路径/?未知\u名称\u文件夹?/file.txt 我想做-->我的路径/file.txt 我编写了这段代码,但我有一个错误:EOFError:压缩文件在到达流结束标记之前结束。有什么想法吗 file=my_path+"/"+fil if file.endswith('.tar.gz'): tarf = tarfile.open(file, "r:gz") for inf
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)
正如Paulo提到的,您在第二次打开tar文件时错过了“gz”标志。另外,您复制文件的目标是原始tarball-我假设您希望它位于一个单独的目录中(“此处为targetdir”) 您只需要提取一次内容,因此代码变成:
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!是文件的完整路径)提取时您不需要“gz”标志吗?您还可以查看包含许多shell实用程序的shutil库,包括复制文件。因此添加“from shutil import copy2”然后用“copy2(info.name,targdir)”复制文件