我正在从 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?
但是许多服务器支持列表的非标准/专有过滤。
如果您幸运并且您的 FTP 服务器确实支持此功能,则您可以使用文件掩码来仅检索文件的子集。在您的情况下,掩码将是一个简单的 *
模式,大多数主要 FTP 服务器都支持该模式。
ftp.retrlines('LIST *string*')
有关常见 FTP 服务器支持的模式的部分列表,请参阅我对 FTP directory partial listing with wildcards 的回答.
关于python - 使用 Python ftplib ftp.dir() 或 ftp.retrlines ('LIST' ) 仅返回包含字符串的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45883338/