Python 获取 FTP 最近文件
我需要在我的FTP服务器上找到今天更新的最新文件或目录,我发现了这个解决方案:
def callback(line):
try:
#only use this code if you'll be dealing with that FTP server alone
#look into dateutil module which parses dates with more flexibility
when = datetime.strptime(re.search('[A-z]{3}\s+\d{1,2}\s\d{1,2}:\d{2}', line).group(0), "%b %d %H:%M")
today = datetime.today()
if when.day == today.day and when.month == today.month:
pass
print "Updated file"
#####THE CODE HERE#######
except:
print "failed to parse"
return
ftp.retrlines('LIST', callback)
但是:用这个代码,我只得到了很多“解析失败”的错误信息,还有很多“文件已更新”的打印输出。但我需要的是今天更新的文件或目录的名字。请问在“#####THE CODE HERE#######”这个部分应该粘贴什么代码才能获取到目录名呢?
2 个回答
1
使用 nlst()
来获取文件名,而不是用 retrlines()
。
我不建议你假设你的文件名里没有空格。
1
查看Python的ftplib文档,发现使用retrlines()这个方法时,输出的每一行最后一部分是文件名。
-rw-r--r-- 1 ftp-usr pdmaint 5305 Mar 20 09:48 INDEX
所以,我们可以简单地把这一行分开,然后取最后一个部分,这样就能得到文件名。不过,这种方法只适合文件或文件夹名里没有空格的情况。
name = line.split()[-1]
print(name) # Should be "INDEX"
如果文件名里有空格的话,你可能需要用更复杂的方法来处理这些名字。