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

Python新手求助:从多小时文件中导入时间与频率特定数据

搞定24小时文件的时间与频率数据导入

嘿,作为Python新手处理这种批量文件确实有点挠头,我来一步步带你实现,代码都是可直接复用的,放心~

先明确前提(你可以根据实际情况调整)

我默认你的24个小时文件是这样的:

  • 放在同一个文件夹里,命名比如hour_00.json、hour_01.json...hour_23.json(如果命名不一样,后面代码改改就行)
  • 每个文件里的字典,包含你要的时间和频率字段,比如键名是"time"和"frequency"(如果你的键名是别的,比如"采集时间"、"频次",记得替换代码里的对应部分)

核心代码实现

直接上代码,每一行都加了注释,你跟着改就行:

import os
import json  # 如果你的文件不是JSON,比如是pickle,就换成import pickle

# 用来存所有提取到的数据
time_list = []
frequency_list = []

# 替换成你的文件所在文件夹路径,比如当前文件夹就写"./"
folder_path = "./hourly_data_files"

# 遍历0到23点的文件
for hour in range(24):
    # 生成文件名,保证小时是两位数(比如00、01)
    file_name = f"hour_{hour:02d}.json"
    # 拼接完整的文件路径
    full_path = os.path.join(folder_path, file_name)
    
    # 先检查文件存在不,避免报错
    if os.path.exists(full_path):
        # 打开文件加载字典
        with open(full_path, "r", encoding="utf-8") as f:
            # 如果是pickle文件,就改成data_dict = pickle.load(f)
            data_dict = json.load(f)
            
            # 提取时间和频率,键名一定要和你字典里的一致!
            current_time = data_dict.get("time")
            current_freq = data_dict.get("frequency")
            
            # 确保提取到数据再添加(避免空值)
            if current_time is not None and current_freq is not None:
                time_list.append(current_time)
                frequency_list.append(current_freq)
    else:
        print(f"提醒:{file_name} 找不到,跳过这个文件啦")

# 看看结果
print("提取到的所有时间:", time_list)
print("提取到的所有频率:", frequency_list)

进阶:把数据整理成表格(用pandas)

如果之后要分析数据,把数据转成DataFrame会方便很多,加这段代码就行:

import pandas as pd

# 生成DataFrame
df = pd.DataFrame({
    "时间": time_list,
    "频率": frequency_list
})

# 保存成CSV文件,方便用Excel打开
df.to_csv("daily_time_frequency.csv", index=False, encoding="utf-8-sig")
print("数据已经存成CSV文件啦,去文件夹里看看吧~")

常见问题调整

  • 如果你的文件是txt格式,且字典是直接写在里面的(比如{'time': 'xxx', 'frequency': xxx}),可以把json.load(f)改成eval(f.read())(注意只在你信任的文件里用eval,避免安全问题)
  • 如果文件名不是hour_xx.json,比如是20240520_00.dat,就修改file_name的生成方式,比如f"20240520_{hour:02d}.dat"
  • 如果字典里的频率是字符串类型,记得转成数值,比如current_freq = float(data_dict.get("frequency"))

这样应该就能完美解决你的需求啦,有问题随时调整就行~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:25:57