递归提取文件夹下指定类型的文件到某个文件夹
import os
import shutil
def copy_files_by_type(source_dir, target_dir, file_extensions):
"""
递归遍历源目录,将指定类型的文件复制到目标目录。
:param source_dir: 源目录路径
:param target_dir: 目标目录路径
:param file_extensions: 文件扩展名列表,如 ['.txt', '.py']
"""
# 确保目标目录存在
os.makedirs(target_dir, exist_ok=True)
# 遍历源目录
for root, dirs, files in os.walk(source_dir):
for file in files:
# 检查文件扩展名是否匹配
if any(file.endswith(ext) for ext in file_extensions):
source_path = os.path.join(root, file)
target_path = os.path.join(target_dir, file)
# 如果目标目录中已存在同名文件,则重命名
counter = 1
original_target_path = target_path
while os.path.exists(target_path):
name, ext = os.path.splitext(original_target_path)
target_path = f"{name}_{counter}{ext}"
counter += 1
# 复制文件
shutil.copy2(source_path, target_path)
print(f"Copied: {source_path} -> {target_path}")
if __name__ == "__main__":
# 示例输入输出路径
source_directory = "C:\\Users\\Luke\\Desktop\\image"
target_directory = "C:\\Users\\Luke\\Desktop\\image"
extensions_input = '.jpg,.jpeg,.heic'
# 自定义文件类型
file_extensions = [ext.strip() for ext in extensions_input.split(",") if ext.strip()]
copy_files_by_type(source_directory, target_directory, file_extensions)

4862

被折叠的 条评论
为什么被折叠?



