Python 访问 Azure Datalake 文件夹时出现权限错误

Python PermissionError accessing Azure Datalake folder

我正在尝试将文件从共享文件夹上传到 Azure Datalake gen 1 文件夹。

目前,我只是在测试连接,并列出根目录下的文件夹:

adlCreds = lib.auth(tenant_id = tenant_id, client_secret = client_secret, client_id = client_id, resource = RESOURCE, azure_username = azure_username,azure_password=azure_password)

adls = core.AzureDLFileSystem(adlCreds, store_name=adlsAccountName)

print(adls.ls())

效果很好,我可以看到所有文件夹。

但是,当我尝试使用 ls 方法或 walk 方法访问其中一个文件夹时,出现此错误:

Traceback (most recent call last):
  File "C:\Users\Python37-32\test_azure.py", line 46, in <module>
    print(adls.ls('/Test'))
  File "C:\Users\Python37-32\lib\site-packages\azure\datalake\store\core.py", line 164, in ls
    files = self._ls(path, invalidate_cache)
  File "C:\Users\Python37-32\lib\site-packages\azure\datalake\store\core.py", line 143, in _ls
    self.dirs[key] = self._ls_batched(key, batch_size=batch_size)
  File "C:\Users\Python37-32\lib\site-packages\azure\datalake\store\core.py", line 124, in _ls_batched
    ls_call_result = self.azure.call('LISTSTATUS', path, **parms)
  File "C:\Users\Python37-32\lib\site-packages\azure\datalake\store\lib.py", line 437, in call
    self.log_response_and_raise(response, PermissionError(path), level=exception_log_level)
  File "C:\Users\Python37-32\lib\site-packages\azure\datalake\store\lib.py", line 345, in log_response_and_raise
    raise exception
PermissionError: Test

我被授予对根目录和 'Test' 文件夹的读取、写入和执行权限。

您知道权限被拒绝的原因吗?

感谢您的宝贵时间。

除了X文件夹和文件的权限,还需要X的所有祖先的执行(X)权限

您可以在此处进一步了解读取文件所需的权限

在此处读取此文档中的文件所需的权限:

https://docs.microsoft.com/en-us/azure/data-lake-store/data-lake-store-access-control

添加我的评论作为答案:

错误是因为你刚刚授予了root权限(add to This folder without all children),你还需要授予所有children的权限,才能生效。