使用 python 中的关键字从 FTP 服务器下载日志文件
Download log files from FTP Server using a keyword in python
我在从 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
连接我的日志。已经尝试搜索一些关于我的问题的参考资料。
您可能需要过滤要在客户端计算机上下载的文件。
您可以列出现有文件:
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 中的 \n
)导致问题,您可能必须在最后一行添加 .rstrip("\n")
到 fileName
。
请注意,如果您的文件名中有下划线,则此语法无效。
灵感来自 this github file。
我在从 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
连接我的日志。已经尝试搜索一些关于我的问题的参考资料。
您可能需要过滤要在客户端计算机上下载的文件。 您可以列出现有文件:
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 中的 \n
)导致问题,您可能必须在最后一行添加 .rstrip("\n")
到 fileName
。
请注意,如果您的文件名中有下划线,则此语法无效。
灵感来自 this github file。