找到Timor君回复:️批量文件查找
️三、实现方法和详细步骤️1. 在单个目录中查找文件并复制
python
import os
import shutil
def copy_files_single_dir(source_dir, target_dir, file_names):
"""
在单个目录中查找指定文件并复制到目标目录
展开全文:param source_dir: 源目录路径
:param target_dir: 目标目录路径
:param file_names: 要查找的文件名列表
"""
# 检查目标目录是否存在,如果不存在则创建
if not os.path.exists(target_dir):
os.makedirs(target_dir)
# 遍历要查找的文件名列表
for file_name in file_names:
source_file_path = os.path.join(source_dir, file_name)
if os.path.isfile(source_file_path):
target_file_path = os.path.join(target_dir, file_name)
try:
# 复制文件
shutil.copy2(source_file_path, target_file_path)
print(f"成功复制文件: {source_file_path} 到 {target_file_path}")
except Exception as e:
print(f"复制文件 {source_file_path} 时出错: {e}")
else:
print(f"文件 {source_file_path} 不存在")
# 示例用法
source_directory = 'your_source_directory'
target_directory = 'your_target_directory'
file_names_to_find = ['file1.txt', 'file2.pdf']
copy_files_single_dir(source_directory, target_directory, file_names_to_find)
️2. 在指定目录及其子目录中递归查找文件并复制
python
import os
import shutil
def copy_files_recursive(source_dir, target_dir, file_names):
"""
在指定目录及其子目录中递归查找指定文件并复制到目标目录
:param source_dir: 源目录路径
:param target_dir: 目标目录路径
:param file_names: 要查找的文件名列表
"""
# 检查目标目录是否存在,如果不存在则创建
if not os.path.exists(target_dir):
os.makedirs(target_dir)
# 遍历源目录及其子目录
for root, dirs, files in os.walk(source_dir):
for file in files:
if file in file_names:
source_file_path = os.path.join(root, file)
target_file_path = os.path.join(target_dir, file)
try:
# 复制文件
shutil.copy2(source_file_path, target_file_path)
print(f"成功复制文件: {source_file_path} 到 {target_file_path}")
except Exception as e:
print(f"复制文件 {source_file_path} 时出错: {e}")
# 示例用法
source_directory = 'your_source_directory'
target_directory = 'your_target_directory'
file_names_to_find = ['file1.txt', 'file2.pdf']
copy_files_recursive(source_directory, target_directory, file_names_to_find)
四、代码说明