如何使用ftplib查询FTP服务器的剩余可用存储空间?
FTP服务器剩余存储空间查询实现方案
有成熟的实现方案,核心分为两种思路,可根据你对接的FTP服务器支持的命令选择:
方案1:使用SITE DF扩展命令(优先选择)
绝大多数主流FTP服务器(包括vsftpd、ProFTPD、FileZilla Server等)都支持该扩展命令,可直接返回服务器挂载目录的磁盘空间信息,无需遍历文件。
以下是Python基于ftplib的实现示例:
from ftplib import FTP # 建立FTP连接 ftp = FTP(host="你的FTP服务器地址", user="账号", passwd="密码") # 执行SITE DF命令查询空间 resp = ftp.sendcmd("SITE DF") print("空间查询返回结果:", resp) ftp.quit()
返回结果通常为类似格式:213 / 104857600 41943040 62914560,其中最后一个数值即为剩余可用空间的字节数,不同服务器返回字段顺序可能有差异,可根据实际返回内容做字段解析即可。
方案2:遍历目录累加文件大小(兼容不支持扩展命令的场景)
如果服务器禁用了SITE类扩展命令,返回502 Command not implemented报错,可以用你已掌握的size方法累加所有已上传文件的大小,再结合你账号的磁盘配额计算剩余空间:
- 用
nlst递归获取FTP目录下所有文件的完整路径 - 循环调用
size方法累加所有文件的总大小,得到已用空间 - 剩余空间 = 账号总磁盘配额 - 已用空间
注意:该方案仅适用于你独占FTP目录、且已知账号固定配额的场景,如果是多用户共享的FTP空间,该方式无法统计到其他用户占用的空间,计算结果会有偏差。
可上传数量估算建议
估算时建议预留10%~20%的冗余空间,避免文件头占用、磁盘块对齐等因素导致的空间计算误差:可上传数量 = 剩余可用空间 / (单文件平均大小 * 1.2)
向下取整得到的结果会更稳妥。
内容的提问来源于stack exchange,提问作者Debjyoti Banerjee
相关产品推荐
相关产品推荐

