Python ftplib 在下载前无法获取文件大小?

发布于 2024-09-09 00:33:16 字数 322 浏览 6 评论 0原文

我正在使用 ftplib 来传输文件。一切都运转良好。现在我试图在下载之前获取目标文件的大小。

  1. 首先,我尝试使用 ftp.size(filename) 获取大小。服务器抱怨我无法在 ascii 模式下执行此操作。

  2. 然后我尝试使用 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.

  1. First, I tried just getting size with ftp.size(filename). Server complained that I can't do that in ascii mode.

  2. 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

友谊不毕业 2024-09-16 00:33:16

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

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

Very late reply, but here's the correct answer. This works with ProFTPD.

ftp.sendcmd("TYPE i")    # Switch to Binary mode
ftp.size("/some/file")   # Get size of file
几度春秋 2024-09-16 00:33:16

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

FTP.大小(文件名)
要求尺寸为
服务器上名为 filename 的文件。
成功后,文件大小为
以整数形式返回,否则为 None
被返回。 请注意尺寸
命令不是标准化的,但是
许多常见服务器都支持
实施

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

Ftplib can get the size of a file before downloading. As the documentation says:

FTP.size(filename)
Request the size of
the file named filename on the server.
On success, the size of the file is
returned as an integer, otherwise None
is returned. Note that the SIZE
command is not standardized, but is
upported by many common server
implementations

Apparently your server doesn't support this feature.

清风挽心 2024-09-16 00:33:16

“服务器抱怨我无法在 ascii 模式下执行此操作。” -- 尝试显示您使用的确切代码以及服务器响应的确切文本。使用复制/粘贴,不要凭记忆打字。

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

ftp> remotehelp size
214 Syntax: SIZE <sp> pathname

这表明我连接的服务器将支持 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:

ftp> remotehelp size
214 Syntax: SIZE <sp> pathname

This indicates that the server to which I was connected will support a SIZE command.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文