You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Python FTP搜索代码,实现忽略前缀时间戳查找文件?

修改Python FTP文件搜索逻辑,支持忽略时间戳匹配

原有精确匹配代码示例(参考常见实现)

如果你的原有代码是类似这样的精确匹配逻辑:

from ftplib import FTP

def find_ftp_file(ftp_conn, target_name):
    # 获取FTP目录文件列表
    file_list = ftp_conn.nlst()
    # 精确匹配完整文件名
    return [file for file in file_list if file == target_name]

修改后的匹配逻辑

只需要调整列表推导式的匹配条件,加入你测试过的[16:]截取逻辑,同时兼容原有精确匹配的场景:

from ftplib import FTP

def find_ftp_file(ftp_conn, target_name):
    file_list = ftp_conn.nlst()
    # 双匹配逻辑:精确匹配完整文件名 或 跳过前16位时间戳匹配短文件名
    return [
        file for file in file_list 
        if file == target_name 
        or (len(file) > 16 and file[16:] == target_name)
    ]

关键说明

  • len(file) > 16是安全校验,避免对长度不足16位的文件执行切片操作引发索引越界错误
  • 保留原有精确匹配逻辑,确保用户输入完整带时间戳的文件名时依然能正常匹配
  • 如果你的原有代码是用ftp.dir()遍历文件(而非nlst()),只需要把获取文件名的逻辑替换后,匹配条件完全一致

另一种遍历方式的修改示例(针对用ftp.dir()的场景)

def find_ftp_file(ftp_conn, target_name):
    file_list = []
    # 用dir()解析文件名
    ftp_conn.dir('.', lambda line: file_list.append(line.split()[-1]))
    # 同样的匹配逻辑
    return [
        file for file in file_list 
        if file == target_name 
        or (len(file) > 16 and file[16:] == target_name)
    ]

内容的提问来源于stack exchange,提问作者michalb93

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 08:40:35