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

如何通过pysftp获取SFTP服务器文件的最后修改时间

pysftp获取文件修改时间实现方案

你自定义的My_Connection类继承了pysftp.Connection的所有原生方法,无需额外封装函数,直接通过内置属性查询接口即可获取文件最后修改时间,两种常用场景的实现如下:


方法1:查询单个指定文件的修改时间

调用stat(远程文件路径)方法,返回的SFTP属性对象中st_mtime字段即为文件最后修改的秒级Unix时间戳,可直接存储到Mongo,也可转换为datetime格式存储。

from datetime import datetime

# 实例化自定义连接
with My_Connection(
    host="你的SFTP服务地址",
    username="登录账号",
    password="登录密码"
) as sftp:
    # 替换为目标文件的远程路径
    target_file = "/data/report/2024.csv"
    # 获取文件属性
    file_attr = sftp.stat(target_file)
    # 原始时间戳(可直接存入Mongo)
    modify_ts = file_attr.st_mtime
    # 可选:转换为可读datetime格式
    modify_dt = datetime.fromtimestamp(modify_ts)

    print(f"文件修改时间戳:{modify_ts},可读时间:{modify_dt}")

方法2:批量获取目录下所有文件的修改时间

如果需要遍历目录获取大量文件的修改时间,优先使用listdir_attr(远程目录路径)方法,仅需一次请求即可拿到目录下所有文件的属性,性能远高于循环调用stat。

import stat

with My_Connection(
    host="你的SFTP服务地址",
    username="登录账号",
    password="登录密码"
) as sftp:
    # 替换为目标目录的远程路径
    target_dir = "/data/report/"
    # 遍历目录下所有文件/文件夹属性
    for attr in sftp.listdir_attr(target_dir):
        # 过滤掉文件夹,只保留文件
        if stat.S_ISREG(attr.st_mode):
            print(f"文件名:{attr.filename},修改时间戳:{attr.st_mtime}")

注意事项

  • st_mtime返回的是SFTP服务器所在时区的时间戳,如需转换为本地时间存储,请对齐时区避免出现时间偏差
  • 如果查询的是软链接文件,stat()会自动返回链接指向的源文件属性,如需获取软链接本身的属性,可改用lstat()方法
  • 时间戳存储到Mongo时建议保留原始Unix时间戳格式,后续做时间对比、格式转换时更灵活

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 15:06:03