Python 使用通配符和日期变化从 FTP 获取文件

0 投票
1 回答
1334 浏览
提问于 2025-04-18 06:22

我需要在FTP目录中通过通配符查找文件,目录里有一些文件的名字部分是相同的(这个部分的名字是用掩码指定的),而且我需要找到修改日期较晚的文件。
举个例子:目录里有这些文件:AAA1、AAA2、AAA3、BBB1、BBB2。我想查找名字中包含*AAA和BBB*的文件,以及修改日期较晚的AAAx和BBBx文件。

这是我目前的代码:

dir_source = ftp.nlst()
masks = ["*.txt", "*.log"]

def listFiles(files, masks):
    findFiles = []
    parrent = re.compile("|".join(map(fnmatch.translate, masks)), re.I).match
    for filename in filter(parrent, files):
        d = {filename: int((ftp.sendcmd('MDTM ' + filename))[4:])}
        print d
    findFiles.append(max(d, key=lambda i: d[i]))
    return findFiles

print listFiles(dir_source, masks)

但是它不管用……我该怎么改这个函数呢?

1 个回答

0

这可以用了!

def listFiles(files, masks):
    findFiles = []
    for x in masks:
        parrent = re.compile(fnmatch.translate(x)).match
        d = {filename: ((ftp.sendcmd('MDTM ' + filename))[4:]) for filename in filter(parrent, files)}
        print d
        findFiles.append(max(d, key=lambda i: d[i]))
    return findFiles

也许会有人想出更好的办法?

撰写回答