您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

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

如果您的FTP服务器支持MLSD命令,则解决方案很简单:

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

entries = list(ftp.mlsd())

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

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

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 group           4096 Mar 26  2018 folder1-20180326
drw-r--r-- 1 user group           4096 Jun 18 11:21 folder2-20180618
-rw-r--r-- 1 user group           4467 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按日期获取最新文件

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

lines = ftp.nlst("-t")

latest_name = lines[-1]

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

lines = ftp.nlst()

latest_name = max(lines)

python 2022/1/1 18:25:34 有186人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶