如何修改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
相关产品推荐
相关产品推荐

