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

如何在Raspberry Pi Pico W的MicroPython中获取正确文件修改日期?

解决Raspberry Pi Pico W上MicroPython获取文件正确修改时间的问题

可能的原因及解决方案

1. 升级MicroPython固件版本

旧版本的MicroPython针对Pico W的LittleFS文件系统实现存在时间戳更新bug,建议直接升级到最新稳定版固件,多数情况下能解决时间戳不更新的问题。

2. 确保修改文件时系统时间已生效

即使time.localtime()显示时间正确,也要确认在完成文件修改操作前系统时间已正确同步/设置。若文件是在系统时间未初始化前创建的,其初始修改时间会是epoch默认值,后续修改文件时需保证时间正常,才会触发时间戳更新。

3. 手动强制设置文件修改时间

如果文件系统自动更新时间戳的功能失效,可在修改文件后手动调用os.utime()函数设置修改时间:

import os
import time

file_path = "/test.txt"
# 获取当前秒级时间戳
current_timestamp = time.time()
# 同步设置访问时间和修改时间为当前时间
os.utime(file_path, (current_timestamp, current_timestamp))

# 读取并转换修改时间
stat_data = os.stat(file_path)
modified_time = time.localtime(stat_data[8])
print(f"文件最后修改时间: {modified_time[0]}-{modified_time[1]:02d}-{modified_time[2]:02d} {modified_time[3]:02d}:{modified_time[4]:02d}:{modified_time[5]:02d}")

4. 验证文件系统时间戳支持

Pico W默认使用的LittleFS v2原生支持时间戳,但自定义编译的固件可能未启用该功能。若使用官方固件无需额外配置;若自行编译固件,需确保编译选项中开启了LittleFS的时间戳支持。

获取目录中最后修改文件的完整代码

import os
import time

def get_last_modified_file(dir_path="/"):
    latest_mtime = 0
    target_file = None
    # 遍历目录条目
    for entry in os.ilistdir(dir_path):
        file_name, entry_type = entry[0], entry[1]
        # 仅处理常规文件(跳过目录)
        if entry_type != 0x8000:
            continue
        full_path = f"{dir_path}/{file_name}" if dir_path != "/" else f"/{file_name}"
        stat_info = os.stat(full_path)
        file_mtime = stat_info[8]
        if file_mtime > latest_mtime:
            latest_mtime = file_mtime
            target_file = full_path
    if target_file:
        # 转换为可读时间格式
        readable_time = time.localtime(latest_mtime)
        formatted_time = f"{readable_time[0]}-{readable_time[1]:02d}-{readable_time[2]:02d} {readable_time[3]:02d}:{readable_time[4]:02d}:{readable_time[5]:02d}"
        return target_file, formatted_time
    else:
        return None, "目录下无有效文件"

# 调用示例
target, mod_time = get_last_modified_file()
if target:
    print(f"最后修改的文件: {target}")
    print(f"修改时间: {mod_time}")
else:
    print(mod_time)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 22:22:39