栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Python中获取最新的FTP文件夹名称

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Python中获取最新的FTP文件夹名称

如果您的FTP服务器支持

MLSD
命令,则解决方案很简单:

  • 如果您要根据修改时间戳记做出决定:

    entries = list(ftp.mlsd())

    only interested in directories

    entries = [entry for entry in entries if entry[1][“type”] == “dir”]

    Sort by timestamp

    entries.sort(key = lambda entry: entry[1][‘modify’], reverse = True)

    Pick the first one

    latest_name = entries[0][0]
    print(latest_name)

  • 如果要使用文件名:

    # Sort by filename

    entries.sort(key = lambda entry: entry[0], reverse = True)


如果您需要使用过时的

LIST
命令,则必须解析它返回的专有列表。

常见的* nix列表如下:

drw-r--r-- 1 user group4096 Mar 26  2018 folder1-20180326drw-r--r-- 1 user group4096 Jun 18 11:21 folder2-20180618-rw-r--r-- 1 user group4467 Mar 27  2018 file-20180327.zip-rw-r--r-- 1 user group         124529 Jun 18 15:31 file-20180618.zip

使用这样的清单,此代码将执行以下操作:

  • 如果您要根据修改时间戳记做出决定:

    lines = []

    ftp.dir(“”, lines.append)

    latest_time = None
    latest_name = None

    for line in lines:
    tokens = line.split(maxsplit = 9)
    # only interested in directories
    if tokens[0][0] == “d”:
    time_str = tokens[5] + ” ” + tokens[6] + ” ” + tokens[7]
    time = parser.parse(time_str)
    if (latest_time is None) or (time > latest_time):
    latest_name = tokens[8]
    latest_time = time

    print(latest_name)

  • 如果要使用文件名:

    lines = []

    ftp.dir(“”, lines.append)

    latest_name = None

    for line in lines:
    tokens = line.split(maxsplit = 9)
    # only interested in directories
    if tokens[0][0] == “d”:
    name = tokens[8]
    if (latest_name is None) or (name > latest_name):
    latest_name = name

    print(latest_name)

某些FTP服务器可能返回

.
..
输入
LIST
结果。您可能需要过滤它们。


部分基于:Python
FTP按日期获取最新文件。


如果该文件夹不包含任何文件,仅包含子文件夹,则还有其他更简单的选项。

  • 如果要基于修改时间戳记来决定,并且服务器支持非标准
    -t
    切换,则可以使用:
    lines = ftp.nlst("-t")

    latest_name = lines[-1]

请参见如何获取按修改时间排序的FTP文件夹中的文件

  • 如果要使用文件名:
    lines = ftp.nlst()

    latest_name = max(lines)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/647417.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号