1

我需要在我的 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#######”部分粘贴什么代码来获取目录名?

4

2 回答 2

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"

如果您想处理其中包含空格的名称,您可能需要使用更复杂的解析。

于 2011-08-08T11:59:51.147 回答
1

用于nlst()获取文件名,而不是retrlines().

我不会假设您的文件名没有空格。

于 2011-08-08T12:39:35.713 回答