Azure File Storage列出文件仅返回单个,如何正确获取最新上传文件
问题排查与修正方案
核心问题原因
return语句缩进错误,被放置在for循环内部:
- 第一次循环执行完首个文件的信息追加操作后,就会直接触发return终止函数运行,因此只会返回1个文件的结果。
其他可优化问题
- 未区分目录与文件,当前逻辑会把目录识别为文件拉取属性,可能触发异常
- 仅提取了修改时间的日期部分,若要精确筛选最近上传的文件,建议保留完整时间戳
修正后代码
from azure.storage.file import FileService # 初始化文件服务 file_service = FileService(account_name='替换为你的存储账户名', account_key='替换为你的存储账户密钥') # 替换为你的文件共享名,若要遍历子目录可以后续传入directory_name参数 file_generator = list(file_service.list_directories_and_files('替换为你的文件共享名')) def list_files_in(generator, file_service, share_name='替换为你的文件共享名', directory_name=''): list_files = [] for file_or_dir in generator: # 跳过目录,仅处理文件 if hasattr(file_or_dir, 'is_directory') and file_or_dir.is_directory: continue # 拉取文件属性 file_props = file_service.get_file_properties( share_name=share_name, directory_name=directory_name, file_name=file_or_dir.name ) # 保留完整时间戳,仅需要日期可改为file_props.properties.last_modified.date() modify_time = file_props.properties.last_modified list_files.append((modify_time, file_or_dir.name)) # return移到循环外部,所有文件处理完成后再返回 return list_files # 调用示例:按上传时间倒序排序,取最新的5个文件 all_files = list_files_in(file_generator, file_service) sorted_files = sorted(all_files, key=lambda x: x[0], reverse=True) latest_5_files = sorted_files[:5]
内容的提问来源于stack exchange,提问作者rainbow12
相关产品推荐
相关产品推荐

