如何用Python仅依据文件名前4个字符将文件移动到指定文件夹
按文件名前4字符批量移动文件的Python实现
原代码存在的问题
- 循环语法错误:
for BLTD*.txt in get_files不符合Python语法规则,不能直接用通配符遍历文件列表 - 路径参数错误:
os.replace和shutil.move需要传入具体文件的完整路径,而非文件夹路径 - 缺少前缀判断逻辑:没有实现提取文件名前4字符并筛选的核心功能
修正后的实现代码
import os import shutil # 配置源文件夹与目标文件夹路径 source_dir = r'C:\Users\SHall\OneDrive\Desktop\Test' dest_dir = r'D:\BTLD' # 确保目标文件夹存在,不存在则自动创建 os.makedirs(dest_dir, exist_ok=True) # 遍历源文件夹内的所有条目 for filename in os.listdir(source_dir): # 拼接文件的完整源路径 source_file = os.path.join(source_dir, filename) # 跳过子文件夹,仅处理文件 if not os.path.isfile(source_file): continue # 提取文件名的前4个字符(文件名长度不足4时取全部字符) file_prefix = filename[:4] # 判断前缀是否符合目标条件(此处以'BLTD'为例) if file_prefix == 'BLTD': # 拼接文件的完整目标路径 dest_file = os.path.join(dest_dir, filename) # 执行文件移动操作 shutil.move(source_file, dest_file) print(f"已完成移动: {filename}")
代码关键说明
os.makedirs(dest_dir, exist_ok=True):提前创建目标文件夹,避免因文件夹不存在导致移动失败os.path.isfile(source_file):过滤掉源文件夹中的子文件夹,只处理文件类型filename[:4]:提取文件名(包含扩展名)的前4个字符,实现按前缀筛选的核心逻辑shutil.move:跨磁盘移动文件也能稳定运行,比os.replace兼容性更强
扩展说明
如果需要匹配多个目标前缀,可将前缀存入列表后判断:
target_prefixes = ['BLTD', 'ABCD', 'XYZ1'] if file_prefix in target_prefixes: # 执行移动操作
内容的提问来源于stack exchange,提问作者INegativeI
相关产品推荐
相关产品推荐

