通过python检查azure数据湖存储gen2中是否存在文件

时间:2020-06-16 14:31:01

标签: python-3.x azure-data-lake-gen2

嗨,我想知道ADLS Gen 2中文件的存在

file_client = service_client.get_file_client(file_system='filelayer', file_path='my_file.txt')  

这提供了file_client,但是如何检查文件是否存在,因为试图重命名它并给出错误为(如果不存在):

(SourcePathNotFound) The source path for a rename operation does not exist

所以我只想在文件存在的情况下重命名file_client.rename_file(target_name)

2 个答案:

答案 0 :(得分:0)

没有file_exists,但是您可以使用get_file_properties()


def exists(file_client: DataLakeFileClient):
    try:
        file_client.get_file_properties()
        return True
    except ResourceNotFoundError:
        return False

file_client = service_client.get_file_client(file_system='filelayer', file_path='my_file.txt')  
if exists(file_client):
   file_client.rename_file(targetName)

但是,一些人(包括我在内)考虑了直接解决问题的pythonic方法:

file_client = service_client.get_file_client(file_system='filelayer', file_path='my_file.txt')

try: 
   file_client.rename(target_name)
except ResourceNotFoundError: 
   # log that the files does not exist or not, up to you
   pass
``

答案 1 :(得分:-1)

尝试/满足您的需求是否足够? 您可以将get_file_client放入try中,如果找不到,则会捕获SourcePathNotFound异常。