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

使用Python在Azure ADLS Gen2中实现容器内文件移动/复制

在Azure ADLS Gen2同一容器内复制文件

首先确保安装Azure存储SDK:

pip install azure-storage-file-datalake

以下是同一容器内复制文件的Python代码,支持保留原文件名:

from azure.storage.filedatalake import DataLakeServiceClient

def copy_file_between_folders(connection_string, container_name, source_folder, dest_folder, file_name):
    # 初始化服务客户端
    service_client = DataLakeServiceClient.from_connection_string(connection_string)
    
    # 获取容器客户端
    container_client = service_client.get_file_system_client(file_system=container_name)
    
    # 构建源文件和目标文件的路径
    source_file_path = f"{source_folder}/{file_name}"
    dest_file_path = f"{dest_folder}/{file_name}"
    
    # 获取源文件客户端
    source_file_client = container_client.get_file_client(source_file_path)
    
    # 复制文件到目标路径
    dest_file_client = container_client.get_file_client(dest_file_path)
    dest_file_client.copy_from_url(source_file_client.url)
    
    print(f"文件 {file_name} 已从 {source_folder} 复制到 {dest_folder}")

# 使用示例
if __name__ == "__main__":
    # 替换为你的实际配置
    CONNECTION_STRING = "你的Azure存储账户连接字符串"
    CONTAINER_NAME = "目标容器名"
    SOURCE_FOLDER = "processed_files"  # 容器内的源文件夹路径
    DEST_FOLDER = "archived_files"    # 容器内的目标文件夹路径
    FILE_NAME = "data_2024.csv"       # 要复制的文件名
    
    copy_file_between_folders(CONNECTION_STRING, CONTAINER_NAME, SOURCE_FOLDER, DEST_FOLDER, FILE_NAME)

如果需要移动文件(复制后删除原文件),可在复制完成后添加删除逻辑:

# 在复制成功后执行删除
source_file_client.delete_file()
print(f"原文件 {file_name} 已从 {source_folder} 删除")

关键注意事项

  • 确保账户拥有Storage Blob Data Contributor或更高权限,否则会触发权限错误
  • 路径为容器内相对路径,无需包含容器名,例如folder/subfolder而非container/folder/subfolder
  • 目标文件夹不存在时,ADLS Gen2会自动创建对应目录结构
  • 批量复制可遍历源文件夹的文件列表,循环调用上述函数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 11:22:37