一、功能介绍
这段代码的功能是将源文件夹中的文件按照它们的文件扩展名分类并移动到不同的子文件夹中。步骤如下:
-
定义函数:
move_files_by_extension
函数接收两个参数:source_folder
:源文件夹路径。destination_folder
:目标文件夹路径,文件将根据扩展名移动到此路径下的相应子文件夹中。
-
遍历文件:遍历
source_folder
中的所有文件。 -
检查文件类型:确保处理的对象是文件而不是文件夹。
-
提取扩展名:使用
os.path.splitext
函数提取文件的扩展名。 -
创建目标子文件夹:根据提取到的扩展名创建目标文件夹(如果不存在则创建)。
-
移动文件:使用
shutil.move
函数将文件从源文件夹移动到目标文件夹下的相应子文件夹。
代码详解
-
函数定义:
move_files_by_extension
函数定义,接收两个参数。 -
文件遍历:使用
os.listdir
遍历source_folder
中的所有文件。 -
文件检查:使用
os.path.isfile
检查当前处理的对象是否为文件。 -
提取扩展名:使用
os.path.splitext
函数分割文件名和扩展名,并获取扩展名部分。 -
创建目标子文件夹:
- 使用
os.path.join
构造目标子文件夹的路径。 - 使用
os.makedirs
创建目标子文件夹,exist_ok=True
表示如果子文件夹已经存在,则不报错。
- 使用
-
移动文件:
- 使用
shutil.move
将文件从源文件夹移动到目标子文件夹。 - 打印一条消息,指示文件移动的信息。
- 使用
-
使用示例:
- 定义
source_folder
和destination_folder
变量。 - 调用
move_files_by_extension
函数,并传入相应的路径参数。
- 定义
二、代码
import os
import shutil
def move_files_by_extension(source_folder, destination_folder):
# 遍历源文件夹中的所有文件
for filename in os.listdir(source_folder):
source_path = os.path.join(source_folder, filename)
# 确保是文件而不是文件夹
if os.path.isfile(source_path):
# 获取文件的后缀名
_, extension = os.path.splitext(filename)
# 创建目标文件夹(如果不存在)
destination_subfolder = os.path.join(destination_folder, extension[1:])
os.makedirs(destination_subfolder, exist_ok=True)
# 构建目标路径
destination_path = os.path.join(destination_subfolder, filename)
# 移动文件
shutil.move(source_path, destination_path)
print(f"Moved: {filename} to {destination_subfolder}")
# 使用示例
source_folder = r"E:\pythonProject\pythonProject\houzhui"
destination_folder = r"E:\pythonProject\pythonProject\tiqu"
move_files_by_extension(source_folder, destination_folder)
改成你的路径即可,执行结果(如果不想移动源文件夹的东西,将shutil.move()改为shutil.copy()即可):