300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > python获取ftp所有文件名_在Python中获取最新的FTP文件夹名称

python获取ftp所有文件名_在Python中获取最新的FTP文件夹名称

时间:2024-07-30 20:58:21

相关推荐

python获取ftp所有文件名_在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 group 4096 Mar 26 folder1-0326

drw-r--r-- 1 user group 4096 Jun 18 11:21 folder2-0618

-rw-r--r-- 1 user group 4467 Mar 27 file-0327.zip

-rw-r--r-- 1 user group 124529 Jun 18 15:31 file-0618.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结果。您可能需要过滤它们。

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

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

latest_name = lines[-1]

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

latest_name = max(lines)

-01-20

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。