如果我在Python上使用xattr来显示文件的注释,它将显示无关的数据:
>>> from xattr import xattr
>>> from pprint import pprint
>>> pprint(xattr('tmp.pk.new')[u'com.apple.metadata:kMDItemFinderComment'])
'bplist00_\x10\x0fExample comment\x08\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1a'
>>>注释只是“示例注释”,那么正在显示的其他数据是什么?
发布于 2020-08-24 15:59:06
查找器注释保存在二进制属性列表格式中,因此您必须对其进行解码才能访问内容。在Python3中,您可以只使用标准库模块plistlib
>>> from plistlib import loads
>>> from xattr import xattr
>>> contents = xattr('tmp.pk.new')['com.apple.metadata:kMDItemFinderComment']
>>> loads(contents)
'Example comment'如果您仍然使用Python2,如代码所示,您必须使用外部库,因为buildin plistlib不支持二进制格式,例如:
pip install biplist
python
>>> from biplist import readPlistFromString
>>> from xattr import xattr
>>> contents = xattr('tmp.pk.new')['com.apple.metadata:kMDItemFinderComment']
>>> readPlistFromString(contents)
'Example comment'https://stackoverflow.com/questions/63549738
复制相似问题