一、前言
source_dir文件夹下有若干文件,看起来相当乱,源文件夹示例如下:
现在我们准备做以下几件事情:
1.将所有文件按照后缀名称分类
2.新建文件后缀名称的文件夹,新建图片文件夹
3.根据文件后缀名称移动到对应的文件夹,图片移动到图片文件夹
4.修改图片文件夹下所有文件的名称
试想我们人为手动处理的话,是很繁琐的,并且容易出错,所以这里使用Python来自动化处理
二、步骤
遍历提取文件后缀
import os
from Time_Count import time_count
@time_count
def arrange_file_by_ext(path):
# 【遍历提取文件后缀】
for filename in os.listdir(path): # 遍历文件
file_path = path + os.sep + filename # 文件路径
if os.path.isfile(file_path): # 若是文件
file_extension = filename.split('.')[-1] # 提取文件后缀
print(f"{file_extension} {type(file_extension)}")
if __name__ == "__main__":
dir_path = 'D:\\Python Projects\\File_Handle\\source_dir'
arrange_file_by_ext(dir_path)
运行结果:
定义目标文件夹
import os
from Time_Count import time_count
@time_count
def arrange_file_by_ext(path):
# 【遍历提取文件后缀】
for filename in os.listdir(path): # 遍历文件
file_path = path + os.sep + filename # 文件路径
if os.path.isfile(file_path): # 若是文件
file_extension = filename.split('.')[-1] # 提取文件后缀
# 【定义目标文件夹】
if file_extension in ['jpg', 'jpeg', 'png']: # 若是图片文件
destination_directory = path + os.sep + 'img' # 定义目标文件夹(命名为img)
else: # 若不是图片文件
destination_directory = path + os.sep + file_extension # 定义目标文件夹(命名为文件后缀)
print(f"{filename} ====> {destination_directory}")
if __name__ == "__main__":
dir_path = 'D:\\Python Projects\\File_Handle\\source_dir'
arrange_file_by_ext(dir_path)
运行结果:
移动到目标文件夹
import os
import shutil
from Time_Count import time_count
@time_count
def arrange_file_by_ext(path):
# 【遍历提取文件后缀】
for filename in os.listdir(path): # 遍历文件
file_path = path + os.sep + filename # 文件路径
if os.path.isfile(file_path): # 若是文件
file_extension = filename.split('.')[-1] # 提取文件后缀
# 【定义目标文件夹】
if file_extension in ['jpg', 'jpeg', 'png']: # 若是图片文件
destination_directory = path + os.sep + 'img' # 定义目标文件夹(命名为img)
else: # 若不是图片文件
destination_directory = path + os.sep + file_extension # 定义目标文件夹(命名为文件后缀)
# 【移动到目标文件夹】
if not os.path.exists(destination_directory): # 若目标文件夹不存在
os.makedirs(destination_directory) # 创建目标文件夹
shutil.move(file_path, destination_directory + os.sep + filename) # 将文件移动到目标文件夹
if __name__ == "__main__":
dir_path = 'D:\\Python Projects\\File_Handle\\source_dir'
arrange_file_by_ext(dir_path)
运行结果:
修改图片文件名称
import os
import shutil
from Time_Count import time_count
@time_count
def arrange_file_by_ext(path):
num = 1 # 定义第一张图片文件名称
# 【遍历提取文件后缀】
for filename in os.listdir(path): # 遍历文件
file_path = path + os.sep + filename # 文件路径
if os.path.isfile(file_path): # 若是文件
file_extension = filename.split('.')[-1] # 提取文件后缀
# 【定义目标文件夹】
if file_extension in ['jpg', 'jpeg', 'png']: # 若是图片文件
destination_directory = path + os.sep + 'img' # 定义目标文件夹(命名为img)
else: # 若不是图片文件
destination_directory = path + os.sep + file_extension # 定义目标文件夹(命名为文件后缀)
# 【移动到目标文件夹】
if not os.path.exists(destination_directory): # 若目标文件夹不存在
os.makedirs(destination_directory) # 创建目标文件夹
shutil.move(file_path, destination_directory + os.sep + filename) # 将文件移动到目标文件夹
# 【修改图片文件名称】
if file_extension in ['jpg', 'jpeg', 'png']: # 若是图片文件
old_path = destination_directory + os.sep + filename # 原文件路径
new_path = destination_directory + os.sep + f"{str(num)}.{file_extension}" # 新文件路径
os.rename(old_path, new_path) # 重命名文件
num += 1 # 图片名称自+1
if __name__ == "__main__":
dir_path = 'D:\\Python Projects\\File_Handle\\source_dir'
arrange_file_by_ext(dir_path)
运行结果:
三、总结
1.只使用Python自带的库,无需安装下载第三方库
2.文件数量大时运行耗时未进行测试
3.不能用于文件夹下的子文件夹