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

如何用Python glob按日期读取指定JSON文件

解决按日期批量匹配JSON文件的问题

你的核心问题是glob的通配符写法不对,要结合生成的日期变量来精准匹配对应日期的文件。

修正glob匹配规则

观察你的文件名格式,都是以-日期_任意字符.json开头,所以把原来的'day*.json'替换成带日期变量的通配符即可:

json_files = glob.glob(os.path.join(path_to_json, f'-{day}_*.json'))

这里的f'-{day}_*.json'会生成类似-2022_06_13_*.json的匹配规则,刚好对应你文件名里的日期前缀,*会匹配日期后面的所有字符,最后锁定.json后缀。

完整修正后的代码

另外你的代码还有几个小问题需要调整,比如变量名冲突、dump时变量不一致、手动close多余等,修正后的完整代码如下:

import datetime
import pandas as pd
import glob
import os
import json

start = datetime.datetime(2022, 8, 25)
end = datetime.datetime(2022, 12, 25)
datelist = pd.date_range(start, end)
path_to_json = r'C:\Users\Admin\INPUT'
output_base = r'C:\Users\Admin\OUTPUT\Netflix'

# 确保输出目录存在,避免报错
os.makedirs(output_base, exist_ok=True)

for a in datelist:
    day = str(a)[:10].replace('-', '_')
    # 正确匹配对应日期的JSON文件
    json_files = glob.glob(os.path.join(path_to_json, f'-{day}_*.json'))
    
    # 如果当天没有文件,直接跳过循环
    if not json_files:
        continue
        
    for file_path in json_files:
        # with语句会自动关闭文件,不需要手动fi.close()
        with open(file_path, 'r', encoding='utf-8') as fi:
            # 不要用dict当变量名,这是Python内置类型
            data_dict = json.load(fi)
            # 修改Name字段
            data_dict[0]["Name"] = "NETFLIX"
        
        # 提取文件名,用os.path.split更跨平台
        file_name = os.path.split(file_path)[1]
        output_url = os.path.join(output_base, file_name)
        
        # dump时用修改后的data_dict,不是未定义的data
        with open(output_url, "w+", encoding='utf-8') as f:
            json.dump(data_dict, f, indent=4)  # 加indent让输出的JSON更易读

关键修改点说明

  • 用f-string拼接匹配规则,精准锁定对应日期的文件
  • 避免使用dict作为变量名,防止覆盖Python内置类型
  • 移除多余的手动close(),依赖with上下文管理器自动处理文件关闭
  • 修正dump时的变量错误,用修改后的data_dict替代未定义的data
  • 添加os.makedirs确保输出目录存在,避免写入失败
  • 用os.path.split替代rsplit('\\',1),让代码更适配不同操作系统
  • 读取和写入时指定encoding='utf-8',避免中文乱码问题

内容的提问来源于stack exchange,提问作者Adam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 09:31:13