添加July/August后Python PDF重命名脚本报FileNotFoundError求助
解决FileNotFoundError: [WinError 3] 系统找不到指定路径问题
问题原因
你遇到的错误完全是因为新增的July/August里的斜杠/——Windows系统的文件名不允许包含/、\、:等特殊字符。当代码生成带/的新文件名时,os.rename会把/当成路径分隔符,误以为要在目标文件夹下创建July子文件夹并把文件放到里面,但这个子文件夹根本不存在,所以抛出了找不到路径的错误。
解决方案
把月份名里的/替换成Windows支持的合法字符,比如-、&或者空格,比如改成July-August或July & August。
修改后的代码
import os import glob # 目标文件夹路径 folder = r"Files to remane folder" pdf_files = glob.glob(os.path.join(folder, "*.pdf")) # 修正后的月份列表,替换了非法斜杠 months = ["October", "November", "December", "January", "February", "March", "April", "May", "June", "July-August", "September"] for i, pdf_file in enumerate(pdf_files): # 获取不带扩展名的文件名 base_name = os.path.splitext(os.path.basename(pdf_file))[0] # 匹配对应月份 month = months[i % len(months)] # 生成新文件名 new_name = f"{base_name} - {month}.pdf" # 拼接新文件路径并执行重命名 new_path = os.path.join(folder, new_name) os.rename(pdf_file, new_path) print(f"文件已重命名: {pdf_file} -> {new_name}")
额外优化(可选)
如果担心后续还会出现类似的非法字符问题,可以添加一个自动过滤非法字符的函数,避免手动修改:
import os import glob def sanitize_filename(name): # Windows文件名禁止的字符集合 invalid_chars = '<>:"/\\|?*' for char in invalid_chars: name = name.replace(char, '-') return name folder = r"Files to remane folder" pdf_files = glob.glob(os.path.join(folder, "*.pdf")) months = ["October", "November", "December", "January", "February", "March", "April", "May", "June", "July/August", "September"] for i, pdf_file in enumerate(pdf_files): base_name = os.path.splitext(os.path.basename(pdf_file))[0] month = months[i % len(months)] # 先过滤月份名里的非法字符 cleaned_month = sanitize_filename(month) new_name = f"{base_name} - {cleaned_month}.pdf" new_path = os.path.join(folder, new_name) os.rename(pdf_file, new_path) print(f"文件已重命名: {pdf_file} -> {new_name}")
内容的提问来源于stack exchange,提问作者Cesar Jaramillo
相关产品推荐
相关产品推荐

