Python将文件从当前路径移动到名称类似于或与要移动的文件类似的特定文件夹

问题描述

我的文件夹结构如下:

  1. 文件夹95000
  2. 文件夹95002
  3. 文件夹95009
  4. AR_95000.pdf
  5. AR_95002.pdf
  6. AR_95009.pdf
  7. BS_95000.pdf
  8. BS_95002.pdf
  9. 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)就直接作为实例方法完成了。


参考: