在python中,“str”对象没有属性“from_directory_url”

2024-10-05 10:52:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在打电话

from azure.storage.fileshare import  ShareDirectoryClient

shrdDirClient = ShareDirectoryClient.from_directory_url
(detailedFileURI,snapshot=None, credential=None)

但导致上述错误。 我试过了

if hasattr(ShareDirectoryClient, 'from_directory_url'): 
   print("Present")

但它没有进入循环

我的完整代码太长了。这是我尝试的另一种方法,导致“str”对象不可调用错误

from azure.storage.fileshare import  ShareDirectoryClient
from datetime import timedelta,datetime
now = datetime.now(timezone('UTC'))
sasToken = generate_share_sas(accountName, shareName, accountKey,\
             permission=AccountSasPermissions(read=True, \
                                    write=False, \
                                    delete=False, \
                     list=True, create=True), expiry=now + timedelta(days=3650)\
                                    )
accountURL = "https://nsclusterhdistorage.file.core.windows.net"
shareName = "dev-archived-data"
detailedFileURI = accountURL+'/'+shareName
sh = ShareDirectoryClient()
sh.from_directory_url(detailedFileURI,snapshot=None, credential=sasToken)

我对python azure存储文件共享比较陌生。 有人能帮忙吗


Tags: fromimportnonetrueurldatetimesnapshotstorage
2条回答

对不起,我不能复制这个

我运行了以下代码:

from azure.storage.fileshare import ShareDirectoryClient

detailedFileURI = "Something"
shrdDirClient = ShareDirectoryClient.from_directory_url(detailedFileURI,snapshot=None, credential=None)

它生成了以下错误:

Traceback (most recent call last):
  File "D:\StackOverflow\azure_storage_test.py", line 4, in <module>
    shrdDirClient = ShareDirectoryClient.from_directory_url(detailedFileURI,snapshot=None, credential=None)
  File "C:\Python37\lib\site-packages\azure\storage\fileshare\_directory_client.py", line 164, in from_directory_url
    credential=credential, **kwargs)
  File "C:\Python37\lib\site-packages\azure\storage\fileshare\_directory_client.py", line 96, in __init__
    raise ValueError("Please specify a share name.")
ValueError: Please specify a share name.

现在很明显,这不是成功的执行。老实说,我不知道把detailedFileURI设为什么。但这不是重点。关键是上面的代码示例足以证明我可以使用from_directory_url方法,这在回溯中是清楚的

但是,如果我运行以下代码:

from azure.storage.fileshare import ShareDirectoryClient

ShareDirectoryClient = "some string"
detailedFileURI = "Something"
shrdDirClient = ShareDirectoryClient.from_directory_url(detailedFileURI,snapshot=None, credential=None)

那么我确实遇到了同样的错误:

Traceback (most recent call last):
  File "D:\StackOverflow\azure_storage_test.py", line 5, in <module>
    shrdDirClient = ShareDirectoryClient.from_directory_url(detailedFileURI,snapshot=None, credential=None)
AttributeError: 'str' object has no attribute 'from_directory_url'

当然,如果要为ShareDirectoryClient分配一个字符串,那么导入它就没有什么意义了。您还可以删除import语句。但是,这样做会复制错误消息。在您的问题中没有任何进一步的代码的情况下,我只能得出结论,您的代码与此相同,尽管可能更微妙

我唯一的另一个建议是,您安装的azure-storage-file-share包不知怎的坏了。如果运行只包含以下两行的Python脚本,则应将<class 'type'><class 'str'>作为输出。我得到<class 'type'>,我希望其他使用这个包的人也会得到同样的结果。但是,如果您得到<class 'str'>,则可能是程序包已损坏,您可能希望尝试重新安装它

from azure.storage.fileshare import ShareDirectoryClient
print(type(ShareDirectoryClient))

出于某种原因,“ShareDirectoryClient”的类型为{string}。您可以将其作为字符串导入,即“azure.storage.fileshare”只是将其定义为字符串,或者稍后在代码中将其分配给字符串(在已共享的部分中不可见)。请试试这个: X='一些字符串' X() …您将得到字符串不可调用错误,这意味着无法调用字符串(即,它不是可以调用的函数)

然后是另一个实验: Y='另一个字符串' Y.bla() …您会得到另一个错误,即字符串对象没有名为“bla”的属性

在Python中,一切都是对象。如果你定义 类MyClass() 通过

然后尝试“MyClass.bla()”,您将得到MyClass没有属性“bla”

您是否可以尝试导入ShareDirectoryClient,然后键入(ShareDirectoryClient),我们将查看导入的对象类型

相关问题 更多 >

    热门问题