Python 当您知道文件的类型而不知道文件名时,如何从Azure Data Lake下载文件?
我可以运行以下命令来下载文件“some/path/known_name.json”Python 当您知道文件的类型而不知道文件名时,如何从Azure Data Lake下载文件?,python,python-3.x,azure-data-lake,azure-data-lake-gen2,Python,Python 3.x,Azure Data Lake,Azure Data Lake Gen2,我可以运行以下命令来下载文件“some/path/known_name.json” 我的问题是:当文件名未知但文件类型已知时,如何从其他路径下载,例如“different/path/xxx.json”您可以列出容器中的blob,然后按blob.name过滤json文件 以下是我的测试容器中的blob: 以下是我的python代码: 导入操作系统,uuid 从azure.storage.blob导入BlobServiceClient、BlobClient、ContainerClient 尝试:
我的问题是:当文件名未知但文件类型已知时,如何从其他路径下载,例如“different/path/xxx.json”您可以列出容器中的blob,然后按
blob.name
过滤json文件
以下是我的测试容器中的blob:
以下是我的python代码:
导入操作系统,uuid
从azure.storage.blob导入BlobServiceClient、BlobClient、ContainerClient
尝试:
#考虑到环境变量。
connect\u str=os.getenv('AZURE\u存储\u连接\u字符串')
#创建BlobServiceClient对象,该对象将用于创建容器客户端
blob\u服务\u客户端=BlobServiceClient.from\u连接\u字符串(connect\u str)
#为容器创建唯一的名称
容器名称=“测试”
#创建容器
container\u client=blob\u service\u client.get\u container\u client(container\u name)
#列出容器中的blob
本地路径=“/数据”
blob\u list=container\u client.list\u blobs()
对于blob_列表中的blob:
如果(.json在blob.name中):
本地文件名=blob.name
blob\u client=blob\u service\u client.get\u blob\u client(container=container\u name,blob=local\u file\u name)
下载\文件\路径=os.path.join(本地\路径,本地\文件\名称)
打印(“\n将blob下载到\n\t”+本地\u路径)
打开(下载文件路径,“wb”)作为下载文件:
下载\u file.write(blob\u client.download\u blob().readall())
打印(“\t”+blob.name)
例外情况除外,例如:
打印('异常:')
印刷品(ex)
当我运行代码时,它将下载data.json
和data2.json
def download_file():
try:
file_system_client = FileSystemClient.from_connection_string(...)
full_file_location = "some/path/known_name.json"
target_file_client = file_system_client.get_file_client(full_file_location)
download=target_file_client.download_file()
downloaded_bytes = download.readall()
local_file = open('my_file.json','wb')
local_file.write(downloaded_bytes)
local_file.close()
except Exception as e:
print(e)