Python ftplib可以';下载前无法获取文件大小?

Python ftplib可以';下载前无法获取文件大小?,python,ftplib,Python,Ftplib,我正在使用ftplib传输文件。一切都很顺利。现在,我试图在下载之前获得目标文件的大小 首先,我尝试使用ftp.size(文件名)获取大小。服务器抱怨我不能在ascii模式下这样做 然后我尝试使用ftp.sendcmd(“二进制”)和ftp.sendcmd(“bin”)设置二进制模式。在这两种情况下,服务器都抱怨“500个二进制文件无法理解” 在这种情况下,ftplib能否在下载之前获得文件的大小?我无法控制FTP服务器,也无法更改其运行方式 谢谢Ftplib可以在下载之前获得文件的大小。正如文

我正在使用ftplib传输文件。一切都很顺利。现在,我试图在下载之前获得目标文件的大小

  • 首先,我尝试使用ftp.size(文件名)获取大小。服务器抱怨我不能在ascii模式下这样做

  • 然后我尝试使用ftp.sendcmd(“二进制”)和ftp.sendcmd(“bin”)设置二进制模式。在这两种情况下,服务器都抱怨“500个二进制文件无法理解”

  • 在这种情况下,ftplib能否在下载之前获得文件的大小?我无法控制FTP服务器,也无法更改其运行方式


    谢谢

    Ftplib可以在下载之前获得文件的大小。正如文件所说:

    FTP.size(文件名) 请求的大小 服务器上名为filename的文件。 成功时,文件的大小为 作为整数返回,否则为无 他回来了请注意 命令不是标准化的,而是标准化的 由许多通用服务器支持 实施

    显然,您的服务器不支持此功能。

    “服务器抱怨我无法在ascii模式下执行此操作。”--尝试显示您使用的确切代码和服务器响应的确切文本。使用复制/粘贴,不要从内存中键入

    您有权访问命令行FTP客户端吗?如果没有,就买一个。使用它来试验服务器可以做什么。像REMOTEHELP这样的客户端命令是您的朋友。例如:

    ftp> remotehelp size
    214 Syntax: SIZE <sp> pathname
    
    ftp>remotehelp大小
    214语法:大小路径名
    

    这表示我所连接的服务器将支持SIZE命令。

    很晚才回复,但下面是正确答案。这适用于ProFTPD

    ftp.sendcmd("TYPE i")    # Switch to Binary mode
    ftp.size("/some/file")   # Get size of file
    

    为完整起见:要切换回ASCII,请使用
    类型A