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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 15:42:04