在工作中要实现一个检查文件后缀格式,并返回指定文件后缀的最新上传的文件功能的一个Python函数。主要通过os.path.getmtime(文件)来确定该文件的最后修改时间,返回值为浮点数,表示该文件到所属文件夹的时间间隔。
我们要实现的功能是:
1、找出文件夹中指定的后缀文件
2、当这个文件夹里有多个同后缀的文件时,默认文件未修改的时间起始值为0,当某文件file的最后修改时间大于默认的0时,可以认为该文件较0起始值修改过的文件,对于多个文件进行一个for循环的比较,就可以找出最新的那个文件并返回。
3、a.如果只存在png文件,就执行png文件操作 b.如果没有就不执行操作 c.当有MP4文件时,不管有误png文件,优先执行MP4文件
功能2实现:
def has_single_file_type(directory_path, extensions):
"""
检查目录下是否有无指定类型的文件。
返回:文件夹中最新的指定后缀文件
"""
latest_file = False
latest_mod_time = 0
for ext in extensions:
files = glob.glob(os.path.join(directory_path, f'*{ext}'))
for file in files:
mod_time = os.path.getmtime(file) # 文件最后修改时间
if mod_time > latest_mod_time:
latest_mod_time = mod_time
latest_file = file
return latest_file
编写测试文件:
如果输入的是png,返回“正在操作png”,对于MP4文件也一样
def process_png(file_path):
print(f"处理PNG文件: {file_path}")
def process_mp4(file_path):
print(f"处理MP4文件: {file_path}")
整体实现并接入测试:
def process_directory(directory_path):
"""
根据目录内容决定如何处理不同后缀文件。
"""
png_path = has_single_file_type(directory_path, '.png')
mp4_path = has_single_file_type(directory_path, '.mp4')
if png_path and not mp4_path:
# 只有一张PNG图片
process_png(png_path)
elif mp4_path:
# 无论是否有PNG,只要有MP4就处理最新上传的MP4文件
process_mp4(mp4_path)
else:
print("目录中没有符合条件的文件,不执行操作。")