Python ftplib 在下载前无法获取文件大小?
我正在使用 ftplib 来传输文件。一切都运转良好。现在我试图在下载之前获取目标文件的大小。
首先,我尝试使用 ftp.size(filename) 获取大小。服务器抱怨我无法在 ascii 模式下执行此操作。
然后我尝试使用 ftp.sendcmd("binary") 和 ftp.sendcmd("bin") 设置二进制模式。在这两种情况下,服务器都会抱怨“500 二进制无法理解”
这种情况下,ftplib 可以在下载之前获取文件的大小吗?我无法控制 FTP 服务器,也无法更改它的行为方式。
谢谢
I'm using ftplib to transfer files. Everything is working great. Now I'm trying to get the size of the target file before downloading.
First, I tried just getting size with ftp.size(filename). Server complained that I can't do that in ascii mode.
Then I tried setting binary mode using ftp.sendcmd("binary") and ftp.sendcmd("bin"). In both cases the server complained "500 binary Not understood"
Can ftplib get size of a file before downloading in this instance? I don't control the FTP server and can't change how it's behaving.
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
回复很晚,但这是正确的答案。这适用于 ProFTPD。
Very late reply, but here's the correct answer. This works with ProFTPD.
Ftplib 可以在下载之前获取文件的大小。正如文档所说:
显然您的服务器不支持此功能。
Ftplib can get the size of a file before downloading. As the documentation says:
Apparently your server doesn't support this feature.
“服务器抱怨我无法在 ascii 模式下执行此操作。” -- 尝试显示您使用的确切代码以及服务器响应的确切文本。使用复制/粘贴,不要凭记忆打字。
您可以访问命令行 FTP 客户端吗?如果没有,就买一个。用它来试验服务器可以做什么。像 REMOTEHELP 这样的客户端命令是你的朋友。示例:
这表明我连接的服务器将支持 SIZE 命令。
"Server complained that I can't do that in ascii mode." -- Try showing the exact code that you used AND the exact text of the server response. Use copy/paste, don't type from memory.
Do you have access to a command-line FTP client? If not, get one. Use it to experiment with what the server can do. A client command like REMOTEHELP is your friend. Example:
This indicates that the server to which I was connected will support a SIZE command.