使用 Python ftplib ftp.dir() 或 ftp.retrlines('LIST') 到 return 只有包含字符串的文件

Use Python ftplib ftp.dir() or ftp.retrlines('LIST') to return only files containing a string

我正在从 Python 3.6 访问政府网站,如下所示:

from ftplib import FTP
ftp = FTP("somedepartment.gov")
ftp.login()
>>> '230 Anonymous access granted, restrictions apply'

filepath = "/path/to/ftp/folder/"
ftp.cwd(filepath)
>>> '250 CWD command successful'

然后,我去列出目录的内容,ftp.dir()ftp.retrlines('LIST') 似乎具有相同的效果,在 Jupyter 输出中列出一个巨大的目录。我试图将这些命令的输出分配给一个变量,但它什么都不包含,这无论如何符合docs。我只是想找到一些包含特定字符串的文件的名称,而不是一个巨大的列表。有谁知道如何做到这一点?

一般来说,除了检索所有文件的列表并在本地过滤它们之外别无他法。

Python: How to get list of file and use wildcard in FTP directory?


但许多服务器支持 non-standard/proprietary 过滤列表。

如果幸运的话,您的 FTP 服务器支持此功能,您可以使用文件掩码来仅检索一部分文件。在您的情况下,掩码将是一个简单的 * 模式,大多数主要 FTP 服务器都支持该模式。

ftp.retrlines('LIST *string*')

有关常见 FTP 服务器支持模式的部分列表,请参阅我对 FTP directory partial listing with wildcards 的回答。