小编典典

如何获取按修改时间排序的FTP文件夹中的文件

python

我想使用ftp_nlist功能将所有文件保存在FTP文件夹中。

但默认情况下,它返回按名称排序的数组。

我想按上次修改时间对它们进行排序。我尝试-lt在文件夹路径之前添加,但是它只是在每个文件名之前添加日期时间。

请帮我!


阅读 701

收藏
2021-01-20

共1个答案

小编典典

没有标准的方法让FTP服务器根据您(或任何)标准对文件进行排序。

尽管某些FTP服务器(尤其是ProFTPD和vsftpd)使用LIST/NLST命令支持专有标志来对条目进行排序。

这两个服务器都支持该-t标志,以按修改时间对文件进行排序:

LIST -t

尽管这不仅是非标准的,但实际上违反了FTP协议。

有关ProFTPD支持的所有选项,请参见其手册页:http :
//www.proftpd.org/docs/directives/linked/config_ref_ListOptions.html

需要注意的是vsftpd的仅支持-a,-r,-t,-F-l与含义的ProFTPD相同。

如果您的服务器不支持该-t交换机(或类似交换机),则唯一的选择是按原样检索具有文件属性的列表,并在本地对其进行排序。

为此,您不能使用ftp_nlist,因为它仅返回文件名。

理想的解决方案是使用MLSDFTP命令返回可靠的机器可读目录列表。但是PHP从7.2开始就支持它的ftp_mlsd功能。检查”modify”条目。

或者,有MLSD以下ftp_rawlist命令的in用户注释的实现:https :
//www.php.net/manual/zh/function.ftp-rawlist.php#101071

MLSD在采用这种方法之前,请先检查您的FTP服务器是否支持,因为并非所有的FTP服务器都支持(尤其是IIS和vsftpd不支持)。

或者,您可以使用ftp_rawlist。尽管它返回文件的专有列表,但可能很难解析。但是,如果仅需要支持一台特定服务器,则可以对该服务器的解析进行硬编码。

2021-01-20