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

如何使用Python从ADLS GEN2读取CSV文件及HTTPS访问Azure ADLS文件?

从ADLS Gen2读取CSV的Python实现方案(桌面Cron任务)

以下是两种符合你需求的实现方案,均基于HTTPS访问,适配桌面Cron/任务计划场景:

方案1:使用SAS令牌直接访问HTTPS路径

这是最直接的方式,SAS URL本身就是带权限验证的HTTPS路径,无需额外SDK依赖(仅需pandas或requests)。

步骤

  1. 生成SAS令牌:在Azure门户进入你的ADLS Gen2存储账户,找到目标容器,生成容器或文件级SAS,配置有效期、读权限,复制完整的SAS URL(包含文件路径与SAS参数)。
  2. Python读取CSV:直接通过SAS URL读取文件:

代码示例(Pandas)

import pandas as pd
import os

# 从环境变量读取SAS URL,避免硬编码
sas_url = os.getenv("ADLS_CSV_SAS_URL")

# 直接读取CSV
df = pd.read_csv(sas_url)
print(df.head())

代码示例(流式读取,适合大文件)

import requests
import pandas as pd
from io import StringIO
import os

sas_url = os.getenv("ADLS_CSV_SAS_URL")

response = requests.get(sas_url, stream=True)
response.raise_for_status()

# 流式加载避免内存溢出
df = pd.read_csv(StringIO(response.text))
print(df.head())

注意事项

  • SAS令牌需设置合理有效期,长期任务可考虑存储账户级SAS,或通过服务主体自动生成SAS(需额外代码)。
  • 务必将SAS URL存入环境变量或加密配置文件,禁止硬编码在脚本中。

方案2:服务主体认证(Azure SDK方式)

若担心SAS令牌泄露,可使用Azure AD服务主体认证,底层仍通过HTTPS调用ADLS Gen2 API。

步骤

  1. 创建服务主体:在Azure AD注册应用,为其分配目标容器的Storage Blob Data Reader角色,记录租户ID、客户端ID、客户端密钥。
  2. 安装依赖:
pip install pandas azure-storage-file-datalake
  1. Python读取CSV:

代码示例

from azure.storage.filedatalake import DataLakeServiceClient
import pandas as pd
from io import BytesIO
import os

# 从环境变量读取认证信息
tenant_id = os.getenv("AZURE_TENANT_ID")
client_id = os.getenv("AZURE_CLIENT_ID")
client_secret = os.getenv("AZURE_CLIENT_SECRET")
storage_account = "your-storage-account-name"
container = "your-container-name"
file_path = "path/to/your/file.csv"

# 初始化服务客户端
service_client = DataLakeServiceClient(
    account_url=f"https://{storage_account}.dfs.core.windows.net",
    credential={"tenant_id": tenant_id, "client_id": client_id, "client_secret": client_secret}
)

# 下载并读取文件
file_client = service_client.get_file_client(container=container, file_path=file_path)
file_bytes = file_client.download_file().readall()
df = pd.read_csv(BytesIO(file_bytes))

print(df.head())

注意事项

  • 服务主体仅分配必要的读权限,遵循最小权限原则。
  • 客户端密钥需妥善保管,建议使用Azure Key Vault托管(若需更安全的方式)。

桌面Cron任务配置(Linux/macOS)

  1. 将脚本保存为adls_csv_reader.py,确保依赖已安装。
  2. 在用户环境变量中配置所需参数(如SAS URL或服务主体信息),可添加到~/.bashrc或~/.zshrc:
export ADLS_CSV_SAS_URL="your-full-sas-url"
# 或服务主体变量
export AZURE_TENANT_ID="xxx"
export AZURE_CLIENT_ID="xxx"
export AZURE_CLIENT_SECRET="xxx"
  1. 编辑Crontab:
crontab -e

添加定时任务(示例:每天凌晨1点执行,输出日志到指定文件):

0 1 * * * /usr/bin/python3 /home/your-user/scripts/adls_csv_reader.py >> /home/your-user/logs/adls_reader.log 2>&1

注意:需用which python3确认Python的绝对路径,避免路径错误。

桌面任务计划配置(Windows)

  1. 打开「任务计划程序」,创建基本任务,设置触发时间。
  2. 操作选择「启动程序」,程序路径选择Python.exe的绝对路径(如C:\Python39\python.exe),添加参数为脚本路径(如C:\scripts\adls_csv_reader.py)。
  3. 在「环境」选项卡添加所需的环境变量(SAS URL或服务主体信息)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 08:45:06