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

Python如何搜索文件指定chat_id并读取对应行数据完成值比对

Python实现chat_id匹配与时间戳比对方案

核心实现逻辑

  • 逐行读取keys.txt文件内容,跳过空行
  • 利用ast.literal_eval安全解析每行的元组格式数据,避免字符串拆分带来的格式错误,同时规避eval的代码执行风险
  • 对解析出的chat_id做精确等值匹配,避免子串误判(比如搜索ID546时不会误匹配到54654)
  • 匹配成功后直接取出元组内的时间戳值,和本地已存储的当前值做比对,根据比对结果走对应业务逻辑
  • 遍历完文件未匹配到ID时,走原有新增条目的逻辑分支

现有文件格式说明

keys.txt每行存储一个二元元组字符串,第一个元素为字符串类型的chat_id,第二个元素为浮点型时间戳,样例如下:

('5492828044', 1659360099957.5688)
('54654', 1657397829695.41)
('875186', 1659385033770.0159)
('654564', 1656879437623.957)
('4564564', 1657397840229.474)

可直接运行的完整代码

import ast

def match_and_compare(target_chat_id, current_local_ts):
    target_id = str(target_chat_id)
    file_ts = None

    # 上下文管理器自动处理文件关闭,避免资源泄漏
    with open('keys.txt', 'r', encoding='utf-8') as f:
        for line in f:
            line = line.strip()
            if not line:
                continue
            # 安全解析行内容为元组
            chat_id, ts = ast.literal_eval(line)
            if chat_id == target_id:
                file_ts = ts
                break
    
    # 未找到匹配ID的分支,对应原代码flag==0的逻辑
    if file_ts is None:
        # 此处填写新增记录的业务代码
        print(f"未找到ID为{target_id}的记录,执行新增逻辑")
        return None
    
    # 时间戳比对分支
    if file_ts > current_local_ts:
        # 文件中时间戳更新的处理逻辑
        print(f"文件记录更新,文件时间:{file_ts},本地时间:{current_local_ts}")
        return 1
    elif file_ts == current_local_ts:
        # 时间戳一致的处理逻辑
        print(f"记录一致,时间戳为{file_ts}")
        return 0
    else:
        # 本地时间戳更新的处理逻辑
        print(f"本地记录更新,本地时间:{current_local_ts},文件时间:{file_ts}")
        return -1

# 调用示例
if __name__ == "__main__":
    # 替换为实际要搜索的chat_id和本地存储的对应时间戳
    match_and_compare(target_chat_id=5492828044, current_local_ts=1659360099957.5688)

优化点说明

  • 替换原代码的子串匹配逻辑为精确等值匹配,彻底解决ID误匹配问题
  • 无需手动维护flag、index计数变量,匹配成功直接break终止遍历,性能更高
  • 自动处理空行场景,避免空行导致的解析报错
  • 所有文件操作走上下文管理器,不需要手动调用close(),异常场景下也不会出现文件资源泄漏

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 03:57:19