对于 Python 3.8 Azure 数据湖第 2 代,我如何检查文件系统上是否存在文件?

For Python 3.8 Azure data lake Gen 2, how do I check if a file exists on a filesystem?

我正在使用 Python 3.8、Azure Data Lake gen 2 和以下插件...

azure-storage-blob==12.4.0
azure-storage-file-datalake==12.1.1

如何检查文件系统上是否存在特定路径?我试过这个

from azure.storage.filedatalake import DataLakeFileClient

...
            file = DataLakeFileClient.from_connection_string(
                DATA_LAKE_CONN_STR, 
                file_system_name=filesystem, 
                file_path=path
            )

但收到错误消息,指出 DataLakeFileClient 不存在“存在”方法。

如果要检查文件系统中是否存在文件,请参考以下代码

from azure.storage.filedatalake import DataLakeFileClient

account_name = 'testadls05'
account_key = 'CpfCQot******JOLvB+aJOZbsQ=='
file_system_name='test'
file_client = DataLakeFileClient(account_url="{}://{}.dfs.core.windows.net".format(
        "https",
        account_name
    ),
    file_system_name=file_system_name,
    file_path='test.txt',
    credential=account_key 
)

try:
     file_client.get_file_properties()
except Exception as error:
    print(error)    
    if type(error).__name__ =='ResourceNotFoundError':
        print("the path does not exist")

一种更简单的测试文件或路径是否存在的方法:

from azure.storage.filedatalake import DataLakeServiceClient
...
try:
    file_system_client = service_client.get_file_system_client(file_system="my-file-system")
    if file_system_client.get_file_client("my-file").exists():
        print("file exists")
    else:
        print("file does not exist")

except Exception as e:
    print(e)

get_file_client() 更改为 get_directory_client() 以测试路径。