使用python中的关键字从FTP服务器下载日志文件

时间:2018-01-15 02:43:12

标签: python-3.x ftp ftplib

我在从FTP服务器获取日志文件时遇到问题。 我可以从FTP服务器获取单个文件。但我在获取多个文件时遇到问题,无法从中获取文件。

在我的FTP服务器中,我有日志文件,格式如此LOG_NAME_DATETIME

以下是我在FTP服务器中的文件示例。

log_sample_01-02-2018_08:00:20:119203.txt
log_sample_01-02-2018_19:00:40:113203.txt
log_sample_01-02-2018_22:00:15:112203.txt

我的日志文件的唯一区别是time,我想通过date下载它们

这是我在程序中尝试的并且出错了。

name = 'sample'
date = '01-02-2018'
ftp.retrbinary('RETR log_' + name + '_' + date + '*.txt', open('log.txt', 'wb').write)

我认为最后部分的*会这样做,因为在linux命令行中,我使用cat * .txt来连接我的日志。已经尝试搜索有关我的问题的一些参考。

1 个答案:

答案 0 :(得分:2)

您可能必须过滤要在客户端计算机上下载的文件。 您可以列出现有文件:

fileNames = ftp.nlst()

根据他们的名字下载你想要的那些:

for fileName in fileNames:
    currentName, currentDate, currentTime = fileName.split("_")
    if currentName == name and currentDate == date:
        ftp.retrbinary('RETR '+fileName, open('log.txt', 'wb').write)

如果文件名末尾的结束行(或unix中的.rstrip("\n"))导致问题,则可能必须在最后一行添加fileName \n。 />

请注意,如果文件名中有下划线,则此确切语法不起作用。

this github file的启发。