Python 获取 FTP 最近文件

1 投票
2 回答
1301 浏览
提问于 2025-04-16 23:07

我需要在我的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"

如果文件名里有空格的话,你可能需要用更复杂的方法来处理这些名字。

撰写回答