使用ftplib.retrlines在ftp中下载前N行文本文件

时间:2018-04-12 09:50:54

标签: python python-3.x ftp

我需要从python访问ftp服务器,并下载特定文本文件的前N行。

我读到了关于ftplib和函数后退的内容,但我不知道如何在不下载整个文件的情况下检索前N行(但我不知道这是否可以在ftp协议中使用)

1 个答案:

答案 0 :(得分:0)

您可以通过抛出异常来中止文件下载。

尽管如此,你必须明确地进行清理工作,否则将由retrlines完成。

c = 1

class TooManyLines(Exception):
    pass

contents = ""
def collectLines(s):
    global contents, c
    contents += s + "\n"
    c += 1
    if c == 5:
        raise TooManyLines()

try:
    ftp.retrlines("RETR /path/file.txt", collectLines)
except TooManyLines:
    # read/skip response
    ftp.getmultiline()

Cleaner将复制retrlines实施并根据需要进行修改。