使用ftplib下载部分文件

Nas*_*joe 0 python ftp ftplib python-3.x

有没有一种方法可以从最后一行(文件结尾)仅下载部分文件。就像文件超过40 MB,而我只想检索最后一块,假设是2042个字节。有可能使用python 3和ftplib来做到这一点吗?

mha*_*wke 5

尝试使用该FTP.retrbinary()方法并提供rest参数,该参数是请求文件的偏移量。由于偏移量是从文件的开头开始的,因此您将需要使用文件的大小和所需的数据字节数来计算偏移量。这是使用debian的FTP服务器的示例:

from ftplib import FTP

hostname = 'ftp.debian.org'
filename = 'README'
num_bytes = 500                # how many bytes to retrieve from end of file

ftp = FTP(hostname)
ftp.login()
ftp.cwd('debian')

cmd = 'RETR {}'.format(filename)
offset = max(ftp.size(filename) - num_bytes, 0)
ftp.retrbinary(cmd, open(filename, 'wb').write, rest=offset)

ftp.quit()
Run Code Online (Sandbox Code Playgroud)

这将从num_bytes请求文件的末尾检索最后一个字节,并将其写入当前目录中相同名称的文件中。

的第二个参数retrbinary()是回调函数,在这种情况下,它write()是可写文件的方法。您可以编写自己的回调来处理检索到的数据。