在使用PyObjC解析别名时遇到的问题
我在尝试使用PyObjC(Python与 Objective-C之间的桥梁),版本12.1_3,来查找Finder别名的原始文件,但好像没法弄对:
Python 3.13.13 (main, Apr 8 2026, 18:30:40) [Clang 21.0.0 (clang-2100.0.123.102)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from Foundation import NSURL
>>> alias_path = "Apps/calibre"
>>> url = NSURL.fileURLWithPath_(alias_path)
>>> resolved_url,stale,error = url.initByResolvingAliasFileAtURL_options_error_(url,0,None)
Traceback (most recent call last):
File "<python-input-3>", line 1, in <module>
resolved_url,stale,error = url.initByResolvingAliasFileAtURL_options_error_(url,0,None)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^
objc.error: NSGenericException - *** -[NSURL initByResolvingAliasFileAtURL:options:error:]: object already initialized
>>>
解决方案
你应该将 NSURL.fileURLWithPath_() 创建的URL传递给 NSURL.URLByResolvingAliasFileAtURL_options_error_() 以解析它:
from Foundation import NSURL
alias_path = "Apps/calibre"
url = NSURL.fileURLWithPath_(alias_path)
resolved_url = NSURL.URLByResolvingAliasFileAtURL_options_error_(url, 0, None)
有关更多文档,请参阅 +[NSURL URLByResolvingAliasFileAtURL:options:error]。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。