我需要在 FTP 文件夹中查找最新创建的文件。但是,FTP 服务器未使用 LIST 命令返回文件的完整时间戳(缺少年份):
drwxr-xr-x 2 owner group 0 Nov 9 17:29 archive
drwxr-xr-x 2 owner group 0 Nov 9 17:35 category
drwxr-xr-x 2 owner group 0 Jan 9 07:21 images
并且不支持MLSD命令。
所以目前我使用 MDTM 命令检查每个文件的时间戳。有没有更有效的方法?
我正在使用ftplib包装器。
答案1
man ftp 说:
ls [remote-directory] [local-file] Print a listing of the contents of a directory on the remote machine. The listing includes any system-dependent information that the server chooses to include; for example, most UNIX systems will produce output from the command ‘ls -l’. (See also nlist.) If remote-directory is left unspecified, the current working directory is used. If interac‐ tive prompting is on, ftp will prompt the user to verify that the last argument is indeed the target local file for receiving ls output. If no local file is specified, or if local-file is ‘-’, the output is sent to the terminal.
所以,大多数 UNIX 系统都会生成命令“ls -l”的输出并且该命令可以显示日期或日期和时间,具体取决于文件的“年龄”:
-rw-rw-r-- 1 user group 4 ene 21 12:40 keepalive.out
-rw-rw-r-- 1 user group 525292 oct 4 2013 Linux.svg
考虑到你FTP 命令后可靠高效地获取时间戳,我担心您的方法(MDTM 命令)是唯一不包括编程内容的方法。
答案2
你可能想尝试FTP 实用程序。虽然它不是标准的 Python 模块,也不是内置模块的一部分,但它具有与 os.stat 类似的功能。它允许您获取详细的文件统计信息,例如文件创建日期、大小等。它是 ftplib 的高级接口。
您可能还会发现此链接很有用 -