问题描述
我的文件夹结构如下:
- 文件夹95000
- 文件夹95002
- 文件夹95009
- AR_95000.pdf
- AR_95002.pdf
- AR_95009.pdf
- BS_95000.pdf
- BS_95002.pdf
- BS_95009.pdf
[注:文件夹的名称为95000,95002,等等,文件夹名称中没有实际的单词“ folder”,此处仅出于表示目的而提及。]
我的目标是将文件“ AR_95000.pdf”和“ BS_95000.pdf”移动到名为“ 95000”的文件夹中, 然后将“ AR_95002.pdf”和“ BS_95002.pdf”复制到名为“ 95002”的文件夹中,依此类推。
PDF是系统生成的报告,因此我无法控制其命名。 谢谢!
解决方法
使用pathlib
,此任务变得非常简单:
from pathlib import Path
root = Path("/path/to/your/root/dir")
for file in root.glob("*.pdf"):
folder_name = file.stem.rsplit("_",1)[-1]
file.rename(root / folder_name / file.name)
如您所见,pathlib
优于os
/ shutil
(在这种情况下)的一个主要优势是接口Path
对象直接提供给{{1} }类功能。这样,实际复制(os
)就直接作为实例方法完成了。
参考: