我正在尝试从压缩文件中复制所有.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)
答案 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!是文件的完整路径”