Python 将文件从当前路径移动到名称与正在移动的文件相似或相似的特定文件夹
Python move files from current path to specific folder named like or similar to the file being moved
我的文件夹结构如下所示:
- 文件夹 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
对象直接提供给 os
-类似函数。这样实际的复制(rename()
)直接作为实例方法完成。
参考文献:
我的文件夹结构如下所示:
- 文件夹 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
对象直接提供给 os
-类似函数。这样实际的复制(rename()
)直接作为实例方法完成。
参考文献: