2014-10-02 131 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上的文件的本地索引,然後使用正則表達式從索引中過濾不需要的文件,然後使用批處理腳本中的其餘部分下載它們。

相關問題