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的权限,才能生效。
我正在尝试将文件从共享文件夹上传到 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的权限,才能生效。