我们在处理数据时,需要从大量文件中提取出我们想要的文件类型来进一步研究时可以用此方法。
1.我们可以看到文件中不止有.bmp和.json文件,现在我们将.bmp和.json文件提取到目标文件夹,剩余文件还在源文件夹
文件路径:F:\代码测试\合并数据
目标文件夹路径:F:\代码测试\提取文件
2.代码实现
import os
import shutil
def move_files_by_extension(source_folder, target_folder, extensions):
if not os.path.exists(target_folder):
os.makedirs(target_folder) #os.makedirs() 方法用于递归创建目录
# roots代表序言遍历的根文件夹,root正在遍历的文件夹名字,dirs记录正在遍历的文件夹下的子文件夹集合,files正在遍历的文件夹中的文件集合
for root, dirs, files in os.walk(source_folder): #os.walk函数:遍历文件夹下文件并获得路径
for file in files:
filename, file_extension = os.path.splitext(file)
if file_extension in extensions:
source_path = os.path.join(root, file)
target_path = os.path.join(target_folder, file)
shutil.move(source_path, target_path)
print(f'Moved: {source_path} -> {target_path}')
print("文件移动完成")
# 设置源文件夹路径、目标文件夹路径和要移动的文件类型
source_folder = 'F:\代码测试\合并数据' # 替换为您的源文件夹路径
target_folder = 'F:\代码测试\提取文件' # 替换为您的目标文件夹路径
file_extensions = ['.bmp', '.json'] # 要移动的文件类型列表
# 调用移动函数
move_files_by_extension(source_folder, target_folder, file_extensions)
3.运行结果
(1)我们可以看到代码测试文件夹中新增了“提取文件”文件夹
(2)在“合并数据”文件夹中已经没有了.bmp和.json文件
(3)新增的“提取文件”文件夹中只有.bmp和.json文件