利用Python遍历文件夹下的文件并自动分类可以通过以下步骤实现:
- 遍历文件夹:使用
os
模块中的os.walk
函数来遍历文件夹下的所有文件。 - 分类文件:根据文件扩展名将文件分类并移动到对应的文件夹。
- 创建分类文件夹:如果分类文件夹不存在,则创建它们。
- 移动文件:使用
shutil
模块中的shutil.move
函数将文件移动到相应的分类文件夹中。
下面是一个示例代码,可以帮助你实现文件分类:
import os
import shutil
def classify_files(source_folder):
# 定义文件类型和对应的文件夹
file_types = {
'images': ['.jpg', '.jpeg', '.png', '.gif', '.bmp'],
'documents': ['.pdf', '.doc', '.docx', '.txt', '.xls', '.xlsx'],
'audio': ['.mp3', '.wav', '.aac'],
'video': ['.mp4', '.avi', '.mov', '.mkv'],
'archives': ['.zip', '.rar', '.tar', '.gz'],
'scripts': ['.py', '.js', '.html', '.css']
}
# 创建文件夹
for folder in file_types.keys():
folder_path = os.path.join(source_folder, folder)
if not os.path.exists(folder_path):
os.makedirs(folder_path)
# 遍历文件夹
for root, dirs, files in os.walk(source_folder):
for file in files:
file_path = os.path.join(root, file)
file_ext = os.path.splitext(file)[1].lower()
# 避免移动已分类的文件
if root == source_folder:
moved = False
for folder, extensions in file_types.items():
if file_ext in extensions:
target_path = os.path.join(source_folder, folder, file)
shutil.move(file_path, target_path)
moved = True
break
# 如果文件类型不在已定义的类型中,则移动到'others'文件夹
if not moved:
others_folder = os.path.join(source_folder, 'others')
if not os.path.exists(others_folder):
os.makedirs(others_folder)
shutil.move(file_path, os.path.join(others_folder, file))
if __name__ == "__main__":
source_folder = "path/to/your/folder" # 替换为你的文件夹路径
classify_files(source_folder)
解释代码
- 定义文件类型和对应的文件夹:使用字典定义不同文件类型的扩展名及其对应的目标文件夹。
- 创建文件夹:遍历字典,检查并创建目标文件夹。
- 遍历文件夹:使用
os.walk
遍历源文件夹中的所有文件。 - 分类文件并移动:根据文件扩展名将文件移动到相应的文件夹。如果文件类型未定义,则移动到“others”文件夹中。
使用说明
- 将
source_folder
变量替换为你想要分类的文件夹路径。 - 运行脚本,脚本会自动根据文件扩展名创建对应的文件夹,并将文件移动到相应的文件夹中。
这个脚本可以根据需要进行扩展和修改,例如添加更多文件类型或处理子文件夹中的文件。