2024-04-24 19:30:40 发布
网友
我一直在使用ls = f.mlsd()从ftp获取文件列表和时间戳,但它给了我
ls = f.mlsd()
ftplib.error_perm: 500 Unknown command
ftp服务器有问题吗?我需要在服务器上安装任何东西来运行这个命令吗
实际上,MLSD只是rfc3659中引入的一个协议扩展,某些FTP服务器可能不支持它。如果您关心可移植性,最好使用f.nlst()。在
f.nlst()
如果更改服务器上的某些内容对您是可以接受的,那么我建议您切换到proftpd,它支持MLSD作为mod_facts扩展的一部分。在
MLSD命令不是原始FTP标准的一部分。它是在2007年的RFC 3659中添加的。虽然这还是一段时间以前的事了,但即使现在一些主要的FTP服务器也不支持它。尤其是IIS和vsftpd。在
MLSD
如果需要时间戳,但需要与不支持MLSD命令的服务器对话,则有两个选项:
使用^{}(LIST命令)。并解析文件列表的专有格式以检索时间戳。
LIST
使用^{}检索文件(和文件夹)列表。然后,使用^{}为列出的每个文件发送^{} command。MDTM以标准格式返回文件时间戳。在
MDTM
显然这是一种比前一种方法效率低的方法,但是您不必处理目录列表的专有格式。在
注意,MDTM也不是所有FTP服务器都支持的,但是它比MLSD更受支持,尽管这两个命令都来自同一个RFC(3659)。特别是一个常见的Linux FTP服务器vsftpd支持MDTM,但不支持{}。
有关实现这两种方法的代码,请参阅我的回答:How to get FTP file's modify time using Python ftplib
实际上,MLSD只是rfc3659中引入的一个协议扩展,某些FTP服务器可能不支持它。如果您关心可移植性,最好使用
f.nlst()
。在如果更改服务器上的某些内容对您是可以接受的,那么我建议您切换到proftpd,它支持MLSD作为mod_facts扩展的一部分。在
MLSD
命令不是原始FTP标准的一部分。它是在2007年的RFC 3659中添加的。虽然这还是一段时间以前的事了,但即使现在一些主要的FTP服务器也不支持它。尤其是IIS和vsftpd。在如果需要时间戳,但需要与不支持
MLSD
命令的服务器对话,则有两个选项:使用^{} (
LIST
命令)。并解析文件列表的专有格式以检索时间戳。使用^{} 检索文件(和文件夹)列表。然后,使用^{} 为列出的每个文件发送^{} command 。
MDTM
以标准格式返回文件时间戳。在显然这是一种比前一种方法效率低的方法,但是您不必处理目录列表的专有格式。在
注意,}。
MDTM
也不是所有FTP服务器都支持的,但是它比MLSD
更受支持,尽管这两个命令都来自同一个RFC(3659)。特别是一个常见的Linux FTP服务器vsftpd支持MDTM
,但不支持{有关实现这两种方法的代码,请参阅我的回答:
How to get FTP file's modify time using Python ftplib
相关问题 更多 >
编程相关推荐