我有一个托管数据文件的FTP服务器,其中与数据关联的日期被编码到文件名中。我想编写一个可以查找和下载与特定日期相关的所有文件的进程。复杂的是不同的文件使用不同的编码。 (遗憾的是,更改/标准化名称不是一种选择。)年份可以是四位数或两位数。月份可以是两位数或三位字母。有时会表示日期,子字符串可以是字符串中的任何位置。
目前,我正在创建服务器上所有文件的列表,然后使用正则表达式确定哪些文件是相关的,然后下载这些文件。
是否可以压缩前两个步骤?也就是说,有没有办法让服务器返回与表达式匹配的文件列表?
如果有任何不同,我正在使用Python ftplib。
答案 0 :(得分:1)
使用LIST,MLSD和NSLT在FTP上构建文件的本地索引应该相当简单,然后使用正则表达式从索引中过滤掉不需要的文件,然后使用批处理脚本中的余数来下载它们。
答案 1 :(得分:0)
简短的回答是否,这是不可能的(使用FTP)。
RFC 5797 Section 3定义了FTP客户端的可用命令。列出远程服务器上的文件的可用命令是LIST
,MLSD
和NSLT
,对于所有这些命令,唯一可用的参数是目录的名称 - 那里有's}无法通过正则表达式或其他方式过滤文件。
但是,除非您处理数百万个文件,否则获取列表并在客户端解析它们并不是一个很大的开销