jupyter notebook本身不支持批量重命名文件,仅提供单文件重命名界面;批量操作必须通过python脚本调用os.rename()实现,且执行前需预览、校验路径与目标存在性并捕获异常。

os.rename() 实现。
为什么不能在 Jupyter 文件浏览器里批量重命名
Jupyter 的前端(File Browser)只暴露了单文件 rename 接口,底层没实现多选+重命名逻辑。你右键、Ctrl+多选、拖拽选中多个文件,菜单里都不会出现“Rename”选项——这不是 UI 缺失,是服务端根本没提供对应 API。
用 os.rename() 批量改名前必须检查的三件事
很多人直接贴代码跑,结果报错或覆盖文件,问题常出在这几个地方:
-
os.listdir()返回的顺序不固定,如果新旧名有依赖关系(比如把a1.ipynb改成001.ipynb,又把a2.ipynb改成002.ipynb),但列表顺序是a2在前,就可能先生成002.ipynb,再 renamea1时因同名冲突失败 - 路径拼接必须用
os.path.join(),别用字符串拼接path + "/" + filename—— Windows 下会出\和/混用问题 - 目标文件名已存在时,
os.rename()直接抛OSError: [WinError 183]或FileExistsError,不会自动跳过或覆盖
按 Excel 清单重命名时,openpyxl 读取列要注意什么
常见需求是照着 Excel 表格里「原名→新名」一对一对改,比如第一列是新名,第二列是旧名(或带扩展名)。这时容易踩坑:
- Excel 单元格值可能是 float 类型(比如编号 123 写成 123.0),得强制转
str(int(value))或用value.strip()防空格 - 路径里含中文时,
openpyxl.load_workbook()默认能读,但后续os.rename()在 Windows 上对中文路径支持良好,Linux/macOS 则需确认 locale 是 UTF-8 - 如果 Excel 里写的是
report.pdf,而实际文件是REPORT.PDF,Windows 不区分大小写,Linux 会报No such file—— 建议统一用filename.lower()对齐
安全执行前务必加预览和存在性校验
别一上来就 os.rename()。先打印映射关系,再检查源文件是否存在、目标路径是否可写:
for old, new in rename_map.items():
old_path = os.path.join(folder_path, old)
new_path = os.path.join(folder_path, new)
if not os.path.exists(old_path):
print(f"⚠️ 源文件不存在: {old}")
continue
if os.path.exists(new_path):
print(f"❌ 目标已存在: {new}")
continue
print(f"✅ 将重命名: {old} → {new}")
确认无误后,再把 print 换成 os.rename(old_path, new_path)。少这步,删错文件不是开玩笑的。
最麻烦的其实是路径权限和文件占用——比如某个 .ipynb 正被另一个 Jupyter kernel 打开,os.rename() 就会失败。这种情况只能手动关掉对应 kernel,或者等它释放句柄。











