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

非ADB环境下使用Python读取Azure ADLS Gen2文件报错咨询

问题根因
  • AttributeError: 'DataLakeFileClient' object has no attribute 'read_file':你调用的read_file不属于ADLS Gen2 Python SDK的官方API,且代码逻辑写反了读写方向——你写的片段是往ADLS上传本地文件的错误写法,读取ADLS文件的标准入口是download_file()方法。
  • ValueError: This pipeline didn't have the RawDeserializer policy; can't deserialize:这个错误是SDK依赖不兼容导致,通常是安装了预览版SDK,或者azure-storage-file-datalake和依赖的azure-core版本不匹配,也可能是手动构造客户端时覆盖了默认的管道策略配置。
前置准备

先执行以下命令清理旧版本不兼容依赖,安装稳定版SDK和格式转换需要的库,从根源解决序列化策略报错:

pip uninstall -y azure-storage-file-datalake azure-core azure-storage-blob
pip install azure-storage-file-datalake pandas
完整实现代码

不需要依赖ADB,本地Python环境即可完成ADLS文件读取、csv转json全流程,支持内存操作不生成临时文件:

from io import BytesIO
import json
import pandas as pd
from azure.storage.filedatalake import DataLakeFileClient

# 替换为自己的实际配置参数
CONN_STR = "你的ADLS Gen2存储账户连接字符串"
FILE_SYSTEM = "test"  # ADLS容器名
ADLS_CSV_PATH = "source/your_file.csv" # ADLS中csv文件的存储路径
OUTPUT_JSON_PATH = "./final_result.json"

# 初始化文件客户端
file_client = DataLakeFileClient.from_connection_string(
    conn_str=CONN_STR,
    file_system_name=FILE_SYSTEM,
    file_path=ADLS_CSV_PATH
)

# 下载ADLS文件到内存,不需要落地临时csv
download_content = file_client.download_file().readall()
# 读取内存中的csv数据
df = pd.read_csv(BytesIO(download_content))
# 转换为json格式,orient参数可按业务需求调整,records为常用的「每行一条JSON对象」格式
json_data = json.loads(df.to_json(orient="records", force_ascii=False))

# 保存结果到本地json文件
with open(OUTPUT_JSON_PATH, "w", encoding="utf-8") as f:
    json.dump(json_data, f, ensure_ascii=False, indent=2)
补充说明
  • 如果需要读取ADLS中存储的json文件,下载完成后直接用json.loads解析下载的字节内容即可,不需要走pandas转换逻辑。
  • 如果需要把转换后的json回写到ADLS,直接调用文件客户端的upload_data方法传入json序列化后的字节内容即可。
  • 若需要自定义csv读取规则(比如指定编码、分隔符、跳过异常行),直接在pd.read_csv里加对应参数即可,和读取本地csv的用法完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 21:18:23