在Python中,我们可以使用`ftplib`库来通过FTP协议下载文件。以下是一个简单的示例,展示如何下载一个大文件:
```python
import ftplib
def download_file(ftp, filename):
with open(filename, 'wb') as f:
ftp.retrbinary('RETR {}'.format(filename), f.write)
# 连接到FTP服务器
ftp = ftplib.FTP()
ftp.connect('your_ftp_server_address', 21) # FTP服务器地址和端口
ftp.login('username', 'password') # 用户名和密码
# 下载文件
download_file(ftp, 'big_file.zip')
# 退出FTP连接
ftp.quit()
```
在这个示例中,我们首先导入了`ftplib`库。然后,我们定义了一个函数`download_file`,它接受一个FTP客户端和一个文件名作为参数。在函数内部,我们打开一个以二进制写入模式打开的文件,然后调用FTP客户端的`retrbinary`方法来下载文件。
接下来,我们连接到FTP服务器,并使用`login`方法登录到我们的账户。然后,我们调用`download_file`函数来下载文件。最后,我们退出FTP连接。
测试用例:
```python
def test_download_file():
ftp = ftplib.FTP()
ftp.connect('your_ftp_server_address', 21)
ftp.login('username', 'password')
try:
with open('test_file.zip', 'wb') as f:
ftp.retrbinary('RETR test_file.zip', f.write)
assert True
except Exception as e:
print(e)
assert False
ftp.quit()
if __name__ == "__main__":
test_download_file()
```
在这个测试用例中,我们首先连接和登录到FTP服务器。然后,我们尝试下载一个文件并将其保存为本地文件。如果下载成功,我们断言True;否则,我们打印出异常信息并断言False。最后,我们退出FTP连接。