我在从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
来连接我的日志。已经尝试搜索有关我的问题的一些参考。
答案 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的启发。