2024-06-16 14:09:04 发布
网友
我想编写mdfind的python等价物。我想使用.Spotlight-V100元数据,但找不到所用元数据数据库格式的说明,但NSMetadataQuery似乎是我需要的。我想在python中使用内置的Obj-C绑定来实现这一点,但是还没有找到正确的咒语来让它工作。不确定问题是因为调用的异步性质,还是我只是把东西不正确地连接在一起。在
一个简单的例子给出“mdfind”的等价物就可以了。在
我有一个非常简单的版本。我的谓词不太正确,因为等价的mdfind调用有额外的结果。另外,它需要两个参数,第一个是基本路径名,第二个是搜索项。在
代码如下:
from Cocoa import * import sys query = NSMetadataQuery.alloc().init() query.setPredicate_(NSPredicate.predicateWithFormat_("(kMDItemTextContent = \"" + sys.argv[2] + "\")")) query.setSearchScopes_(NSArray.arrayWithObject_(sys.argv[1])) query.startQuery() NSRunLoop.currentRunLoop().runUntilDate_(NSDate.dateWithTimeIntervalSinceNow_(5)) query.stopQuery() print "count: ", len(query.results()) for item in query.results(): print "item: ", item.valueForAttribute_("kMDItemPath")
查询调用是异步的,因此为了更完整,我应该注册一个回调并让run循环连续运行。事实上,我搜索了5秒,所以如果我们有一个需要更长时间的查询,我们只能得到部分结果。在
我有一个非常简单的版本。我的谓词不太正确,因为等价的mdfind调用有额外的结果。另外,它需要两个参数,第一个是基本路径名,第二个是搜索项。在
代码如下:
查询调用是异步的,因此为了更完整,我应该注册一个回调并让run循环连续运行。事实上,我搜索了5秒,所以如果我们有一个需要更长时间的查询,我们只能得到部分结果。在
相关问题 更多 >
编程相关推荐