python - 使用 Python ftplib ftp.dir() 或 ftp.retrlines ('LIST' ) 仅返回包含字符串的文件

标签 python python-3.x ftp ftplib

我正在从 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/

相关文章:

python - 如何在 Hangman 游戏中通过一次猜测激活多个字母?

python-3.x - python给视频opencv添加音频

java - 使用 spring 集成下载文件

android - 将音频文件从 FTP 服务器流式传输到 Android 应用程序

python - 如何找到子字符串并在 QTextEdit 中突出显示它?

Python - NLTK 语料库中 tagged_sents 和 tagged_words 之间的区别

python - 使用 python 和 lxml 获取元素并更改元素文本

python - 检查列表 a 中的项目是否在列表 b 中找到并返回列表 c 与列表 b 在 Python 中的匹配索引

python - RGB 是从 ImageGrab.grab().load() 中获取的,是数组还是字符串

java - 如何使用FTP(E)S从服务器下载文件?