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

如何用Python获取ADLS Gen2文件最后修改日期并存储为CSV

问题排查

你原来的代码存在两个核心问题:

  1. 路径字符串使用反斜杠\,Python解析时会把\t这类组合识别为转义字符,同时Azure ADLS的路径规范要求使用正斜杠/作为分隔符
  2. blob.properties.last_modified是Blob/File客户端实例的只读属性,不是可调用方法,不需要传入路径参数,你需要先根据路径初始化对应的文件客户端再读取该属性

解决步骤

1. 安装依赖包

pip install azure-storage-file-datalake pandas

2. 路径预处理

所有输入的字符串路径先统一替换反斜杠为正斜杠,或者使用原始字符串避免转义问题:

# 原始输入路径
raw_path = r'teams\test\A.json'
# 转换为ADLS兼容的路径格式
adls_file_path = raw_path.replace('\\', '/')

3. 完整实现代码

以下代码适配ADLS Gen2场景,支持获取单个/批量文件最后修改时间,最终写入目标容器的CSV文件:

from azure.storage.filedatalake import DataLakeServiceClient
import pandas as pd

# 配置项
STORAGE_ACCOUNT_NAME = "替换为你的存储账户名"
SOURCE_CONTAINER = "替换为源文件所在的容器名"
TARGET_CONTAINER = "替换为存储CSV的目标容器名"
TARGET_CSV_PATH = "file_modify_records.csv"
# 存储账户连接字符串,可在Azure门户存储账户的"访问密钥"页面获取
CONN_STR = "替换为你的存储账户连接字符串"

# 初始化ADLS服务客户端
service_client = DataLakeServiceClient.from_connection_string(CONN_STR)
source_fs_client = service_client.get_file_system_client(SOURCE_CONTAINER)

# ----- 单个文件场景 -----
# 初始化文件客户端
file_client = source_fs_client.get_file_client(adls_file_path)
# 获取文件属性
file_props = file_client.get_file_properties()
last_modified = file_props.last_modified.strftime("%Y-%m-%d %H:%M:%S UTC")

# 构造输出数据
records = [
    {
        "file_path": adls_file_path,
        "last_modified_time": last_modified
    }
]

# ----- 批量文件场景(可选)-----
# 如果需要处理多个路径,遍历路径列表即可
# file_paths = [r'teams\test\A.json', r'teams\test\B.json', ...]
# records = []
# for raw_path in file_paths:
#     adls_path = raw_path.replace('\\', '/')
#     file_client = source_fs_client.get_file_client(adls_path)
#     props = file_client.get_file_properties()
#     records.append({
#         "file_path": adls_path,
#         "last_modified_time": props.last_modified.strftime("%Y-%m-%d %H:%M:%S UTC")
#     })

# 写入CSV并上传到目标容器
df = pd.DataFrame(records)
csv_content = df.to_csv(index=False, encoding="utf-8").encode("utf-8")
target_file_client = service_client.get_file_system_client(TARGET_CONTAINER).get_file_client(TARGET_CSV_PATH)
target_file_client.upload_data(csv_content, overwrite=True)

注意事项

  • 身份验证除了使用连接字符串外,生产环境推荐使用托管身份,避免硬编码密钥
  • 如果使用的是ADLS Gen1,需要替换为azure-mgmt-datalake-store包对应的接口逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 01:36:05