技术问询:如何实现从\\myshare\all_folders复制修改日期为当日的JPG图片至\\myshare\new\all_new_photos
解决方案:过滤当日修改的JPG图片进行复制
你的现有代码已经实现了遍历源目录并复制JPG文件的基础功能,只需要添加修改日期等于当日的判断逻辑即可满足需求。下面是完善后的代码,同时我还优化了一些细节让它更健壮:
import os from shutil import copy import datetime dir_src = r"\\myshare\all_folders" dir_dst = r"\\myshare\new\all_new_photos" # 确保目标目录存在,不存在则自动创建(避免复制时因目录不存在报错) os.makedirs(dir_dst, exist_ok=True) # 获取当前日期(仅保留年-月-日部分,忽略具体时间) today = datetime.datetime.today().date() for root, _, files in os.walk(dir_src): for file in files: # 兼容大小写的JPG格式判断(比如.JPG、.jPg都能匹配) if file.lower().endswith('.jpg'): file_full_path = os.path.join(root, file) # 获取文件的修改时间,并转换为日期格式 file_mod_date = datetime.datetime.fromtimestamp(os.path.getmtime(file_full_path)).date() # 判断文件修改日期是否等于当日 if file_mod_date == today: copy(file_full_path, dir_dst) # 可选:打印复制记录,方便排查 print(f"成功复制文件: {file_full_path}")
关键逻辑解释:
- 日期处理:使用
datetime.datetime.today().date()获取当日的日期对象(不带时间),这样我们只对比日期,不管文件是当天几点修改的。 - 文件修改时间获取:
os.path.getmtime()返回文件的修改时间戳,通过datetime.datetime.fromtimestamp()转换为datetime对象后,调用.date()提取日期部分。 - 大小写兼容:把文件名转成小写后判断后缀,避免漏掉大写后缀的JPG文件。
- 目标目录检查:
os.makedirs(dir_dst, exist_ok=True)确保目标目录存在,如果不存在会自动创建,防止复制时抛出目录不存在的异常。
如果需要更精确的时间范围(比如只复制当天某个时间段内修改的文件),可以调整日期判断逻辑,比如对比完整的datetime对象而非仅date部分。
内容的提问来源于stack exchange,提问作者Mosaab Ahmad
相关产品推荐
相关产品推荐

