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

Python编写for循环实现按日期建文件夹存储服务器消息求助

Python按日期自动归档消息程序实现思路

先修正你现有代码的两处明显错误

  • output = print("Something ...") 这行有问题:print() 函数的返回值是None,你把None写入文件会直接报错。需要先把要存储的内容赋值给变量,再单独执行打印、写入操作。
  • 你当前的代码是单次执行逻辑,没有实现持续运行、每次写入前校验目录的要求。

核心实现思路,你按照这几步改就行

  1. 封装目录自动创建函数
    每次收到消息要写入前,都调用这个函数获取当前最新的日期目录:函数里每次都取当前系统时间生成目录路径,用os.makedirs的exist_ok=True参数,不用自己写判断逻辑,目录不存在会自动创建,已存在也不会报错,天然满足你每次校验的要求,还能自动处理跨天日期切换的问题。
  2. 实现持续运行的监听逻辑
    用while True死循环实现进程持续运行,中间加你对接服务器接收消息的逻辑就行,暂时可以先用sleep模拟接收消息的间隔。
  3. 优化文件写入逻辑
    用with open()上下文管理器操作文件,不用手动调用close(),哪怕写入过程报错也不会出现资源泄漏;如果同一分钟内有多条消息要写入,把打开模式改成追加模式a,避免覆盖之前的内容。

完整可运行参考代码

import os
import datetime
import time

def get_current_date_dir():
    # 每次调用都获取最新的日期,自动适配跨天
    current_date = datetime.datetime.now().strftime("%Y-%m-%d")
    dir_path = f"D:/Dir/Dir_{current_date}"
    # exist_ok=True 自动处理目录存在与否的逻辑,不用手动判断
    os.makedirs(dir_path, exist_ok=True)
    return dir_path

def save_message_to_file(message):
    # 先获取最新的日期目录
    date_dir = get_current_date_dir()
    # 生成当前时间的文件名,你可以按自己需求调整精度,比如按小时就去掉%M
    current_time_str = datetime.datetime.now().strftime("%Y-%m-%d_%H%M")
    file_path = os.path.join(date_dir, f"file_{current_time_str}.txt")
    # a模式是追加写入,同个时间的多条消息不会覆盖,换成w就是覆盖
    with open(file_path, "a", encoding="utf-8") as f:
        # 每条消息加换行分隔
        f.write(f"{message}\n")
    print(f"消息已写入:{file_path}")

if __name__ == "__main__":
    print("消息接收程序已启动,持续运行中...")
    while True:
        # 这里替换成你实际对接服务器接收消息的逻辑
        # 以下是模拟接收消息的测试代码
        test_msg = f"测试消息,接收时间:{datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')}"
        print(f"收到消息:{test_msg}")
        save_message_to_file(test_msg)
        # 模拟每10秒收到一条消息,实际使用可以去掉,换成阻塞式的消息接收接口
        time.sleep(10)

关键逻辑说明

  • 不用专门做日期切换的判断:每次写入前都重新获取当前时间生成目录和文件名,跨天的时候会自动生成新的日期目录,完全符合你的需求。
  • os.makedirs的exist_ok=True参数已经覆盖了你要求的「每次操作前校验文件夹状态,不存在则创建」的逻辑,比你自己写if os.path.exists更简洁,也避免了多进程同时创建目录的竞态问题。
  • 如果需要写入的是实时日志类的内容,也可以调整文件名的时间精度,比如按小时命名,避免生成太多小文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 23:15:05