我正在提取.tar.gz文件里面有文件夹(文件有很多扩展名)。我想将文件夹的所有.txt文件移动到另一个文件夹,但我不知道文件夹的名称。
.txt文件位置---> my_path/extracted/?unknown_name_folder?/file.txt
我想做 - > my_path/extracted/file.txt
我的代码:
os.mkdir('extracted')
t = tarfile.open('xxx.tar.gz', 'r')
for member in t.getmembers():
if ".txt" in member.name:
t.extract(member, 'extracted')
###
答案 0 :(得分:4)
我会首先尝试提取tar文件(See here)
import tarfile
tar = tarfile.open("xxx.tar.gz")
tar.extractall()
tar.close()
然后使用os.walk()
方法(See here)
import os
for root, dirs, files in os.walk('.\\xxx\\'):
txt_files = [path for path in files if path[:-4] == '.txt']
或者使用glob包来收集@alper在下面的评论中建议的txt文件:
txt_files = glob.glob('./**/*.txt', recursive=True)
这是未经测试的,但应该让你非常接近
显然,一旦获得文本文件列表就移动它们
new_path = ".\\extracted\\"
for path in txt_files:
name = path[path.rfind('\\'):]
os.rename(path, new_path + name)