如何使用Python ftplib获取FTP文件的修改时间

如何使用Python ftplib获取FTP文件的修改时间,第1张

如何使用Python ftplib获取FTP文件的修改时间 MLST或MDTM

虽然可以使用

MLST
MDTM
命令通过FTP检索单个文件的时间戳,但ftplib都不支持。

当然,您可以使用实现自己的

MLST
或。
MDTM
FTP.voidcmd

有关详细信息,请参阅RFC 3659,尤其是:

  • 3.文件修改时间(MDTM)
  • 7.机器处理清单(MLST和MLSD)

一个简单的例子

MDTM

from ftplib import FTPfrom dateutil import parser# ... (connection to FTP)timestamp = ftp.voidcmd("MDTM /remote/path/file.txt")[4:].strip()time = parser.parse(timestamp)print(time)

MLSD

ftplib库明确支持的唯一可以返回标准化文件时间戳记的命令是

MLSD
通过
FTP.mlsd
method。尽管仅当您要检索更多文件的时间戳时才使用它。

  • 使用以下命令检索完整的目录列表
    MLSD
  • 在返回的集合中搜索所需的文件
  • 检索
    modify
    事实
  • 根据规范进行解析,
    YYYYMMDDHHMMSS[.sss]

有关详细信息,请再次参考RFC 3659,尤其是:

  • 7.5.3。修改事实部分
  • 2.3。时间段

    from ftplib import FTP
    from dateutil import parser

    … (connection to FTP)

    files = ftp.mlsd(“/remote/path”)

    for file in files:
    name = file[0]
    timestamp = file[1][‘modify’]
    time = parser.parse(timestamp)
    print(name + ‘ - ‘ + str(time))


请注意

MLST
MLSD
和返回的时间
MDTM
均为UTC(除非服务器损坏)。因此,您可能需要针对您当地的时区进行更正。

同样,请参阅RFC 3659 2.3。时间部分:

时间值始终以UTC(GMT)和公历表示,无论在服务器PI位置指示的日期和时间使用了哪种日历。


清单

如果FTP服务器不支持任何的

MLST
MLSD
而且
MDTM
,你所能做的就是用一个过时的
LIST
命令。这涉及解析返回的专有列表。

常见的* nix列表如下:

-rw-r--r-- 1 user group4467 Mar 27  2018 file1.zip-rw-r--r-- 1 user group         124529 Jun 18 15:31 file2.zip

使用这样的清单,此代码将执行以下 *** 作:

from ftplib import FTPfrom dateutil import parser# ... (connection to FTP)lines = []ftp.dir("/remote/path", lines.append)for line in lines:    tokens = line.split(maxsplit = 9)    name = tokens[8]    time_str = tokens[5] + " " + tokens[6] + " " + tokens[7]    time = parser.parse(time_str)    print(name + ' - ' + str(time))



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5643401.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存