我的文件夹结构如下所示:
- 95000
- 95002
- 95009
- AR_95000.pdf
- AR_95002.pdf
- AR_95009.pdf
- BS_95000.pdf
- BS_95002.pdf
- BS_95009.pdf
【注95000、95002、95009为文件夹】
我的目标是将文件
AR_95000.pdf
和 BS_95000.pdf
移动到名为 95000
的文件夹,
然后 AR_95002.pdf
和 BS_95002.pdf
到名为 95002
的文件夹,依此类推。
PDF是系统生成的报告,因此我无法控制命名。
pathlib
这个任务变得超级简单:
from pathlib import Path
from glob import glob
root = Path("/path/to/your/root/dir")
for file in root.glob("*.pdf"):
folder_name = file.stem.rpartition("_")[-1]
file.rename(root / folder_name / file.name)
如您所见,与
pathlib
/os
(在本例中)相比,shutil
的一个主要优点是 Path
对象直接提供给类似 os
的函数的接口。这样,实际的复制 (rename()
) 就直接作为实例方法完成了。
参考资料: