如何使用PyObjC绑定和NSMetadataQuery编写mdfind的python脚本?

2024-06-16 14:09:04 发布

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

我想编写mdfind的python等价物。我想使用.Spotlight-V100元数据,但找不到所用元数据数据库格式的说明,但NSMetadataQuery似乎是我需要的。我想在python中使用内置的Obj-C绑定来实现这一点,但是还没有找到正确的咒语来让它工作。不确定问题是因为调用的异步性质,还是我只是把东西不正确地连接在一起。在

一个简单的例子给出“mdfind”的等价物就可以了。在


Tags: 数据数据库obj格式内置咒语例子性质
1条回答
网友
1楼 · 发布于 2024-06-16 14:09:04

我有一个非常简单的版本。我的谓词不太正确,因为等价的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秒,所以如果我们有一个需要更长时间的查询,我们只能得到部分结果。在

相关问题 更多 >