2014-10-02 159 views
1

我有一个承载数据文件的FTP服务器,其中与数据关联的日期被编码到文件名中。我想写一个过程,可以找到并下载与特定日期相关的所有文件。复杂的是,不同的文件使用不同的编码。 (不幸的是,更改/标准化名称不是一种选择。)年份可以是四位或两位。月份可以是两位数字或三个字母。有时代表一天,并且子字符串可以在字符串中的任何地方。使用正则表达式从FTP服务器下载文件

此刻,我创建了服务器上所有文件的列表,然后使用正则表达式确定哪些文件相关,然后下载这些文件。

是否可以浓缩前两个步骤?也就是说,有没有办法让服务器返回匹配表达式的文件列表?

我使用Python ftplib,如果这有什么区别。

回答

0

简短的回答是没有,这是不可能的(使用FTP)。

RFC 5797 Section 3定义了FTP客户端的可用命令。在远程服务器上列出文件的可用命令是LIST,MLSDNSLT,并且对于所有这些命令,唯一可用的参数是目录的名称 - 无法通过正则表达式或其他方式过滤文件。

这不是一笔大开销,以获得上市,并在客户端解析它们,不过,除非你正在处理数以百万计的文件

+0

谢谢。就名单的大小而言,这不算什么大问题。只是觉得我会尽可能地让这个过程变得紧张。 – Batman 2014-10-02 17:47:29

1

它应该是相当简单的使用LIST,MLSD和NSLT建设FTP上的文件的本地索引,然后使用正则表达式从索引中过滤不需要的文件,然后使用批处理脚本中的其余部分下载它们。

相关问题