You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python查找并打开以当日日期结尾文件夹的代码修复

子目录定位脚本错误排查与修复

原代码存在的核心问题

  • 目录遍历逻辑完全错误:直接对路径字符串做循环只会逐个遍历字符串里的单个字符,根本无法获取目录下的子文件夹列表。
  • 变量冗余与匹配逻辑偏差:代码中提取了当月月份变量但未参与匹配,仅匹配日期容易出现跨月重名的误匹配问题;另外中文系统下strftime("%B")默认返回中文月份名,和英文命名的文件夹无法匹配。
  • 路径拼接错误:拼接父目录和子文件夹名时没有添加路径分隔符,会生成格式错误的无效路径。
  • 缺少边界判断:如果没有找到匹配的文件夹,后续调用pathtofolder变量会直接触发未定义报错。
  • 打开目录的调用逻辑错误:直接把路径传给Popen没有调用系统的文件管理器,无法正常弹出目录窗口。

修复后可直接运行的代码

import datetime
import os
import subprocess
import locale

# 强制使用英文月份格式匹配文件夹名,中文系统如果文件夹是中文月份命名可注释本行
locale.setlocale(locale.LC_TIME, 'en_US')

now = datetime.datetime.now()
# 按实际文件夹结尾命名修改格式串:
# 结尾类似June15 → "%B%d"
# 结尾类似0615(两位月两位日)→ "%m%d"
# 结尾类似2024-06-15 → "%Y-%m-%d"
# 结尾仅为两位日期 → "%d"
target_suffix = now.strftime("%B%d")

base_path = r'C:\Users\Mondoc\Desktop\SweetMemories'
target_folder_path = None

# 遍历目录下所有子文件夹匹配后缀
for entry in os.scandir(base_path):
    if entry.is_dir() and entry.name.endswith(target_suffix):
        target_folder_path = entry.path
        break

if target_folder_path:
    print(f"匹配到目标目录:{target_folder_path},正在打开")
    # Windows系统调用资源管理器打开目录,macOS替换为['open', target_folder_path],Linux替换为['xdg-open', target_folder_path]
    subprocess.Popen(f'explorer "{target_folder_path}"')
else:
    print(f"错误:未在指定路径下找到以「{target_suffix}」结尾的子目录")

使用说明

  • 先根据你自己的子目录实际命名规则,修改target_suffix对应的strftime格式参数即可,保证匹配串和文件夹结尾的日期格式完全一致。
  • 非Windows系统替换对应的文件管理器调用命令即可跨平台运行。

内容的提问来源于stack exchange,提问作者Noob-Programmer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 11:18:27