我正在尝试将文件从共享文件夹上传到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
我被授予根和“测试”文件夹上的读取,写入和执行特权。
您知道为什么拒绝权限吗?
谢谢您的时间。
答案 0 :(得分:0)
除了对X文件夹和文件的权限外,您还需要对X的所有祖先执行(X)权限。
您可以在此处进一步阅读有关读取文件所需的权限
在此处读取本文件中的文件所需的权限:
https://docs.microsoft.com/en-us/azure/data-lake-store/data-lake-store-access-control
答案 1 :(得分:0)
添加我的评论作为答案:
该错误是由您刚刚授予根权限(添加到此文件夹(不带所有子项))引起的,您还需要授予所有子项的许可权,然后它将起作用。