如何使用 python 获取文件的扩展 MacOS 属性?
How to get extended MacOS attributes of a file using python?
我有兴趣使用 python 从文件中获取更多信息。
我知道使用 os.stat(如下所示)returns 文件的信息,但我想从文件中获取其他属性,例如 'Where from?'
os.stat(filename)
posix.stat_result(st_mode=33184, st_ino=131691855, st_dev=16777220L, st_nlink=1, st_uid=501, st_gid=20, st_size=174241, st_atime=1445046864, st_mtime=1445045836, st_ctime=1445045836)
但是,这些不是我感兴趣的属性。我有兴趣获得以下所有属性(特别是 'Where from')
如何获取 'Where from' 字段?
我试过使用 os.access,但这不是我想要的 return,并且一直在搜索 documentation on os,所以我不确定我还能做什么可以尝试。
我的例子:
xattr -lp com.apple.metadata:kMDItemWhereFroms ~/Projects/apimon/apimon/check/tests/resources/brus-\>lux\ dec\ 28.pdf
com.apple.metadata:kMDItemWhereFroms:
00000000 62 70 6C 69 73 74 30 30 A2 01 02 5F 10 54 68 74 |bplist00..._.Tht|
00000010 74 70 73 3A 2F 2F 62 65 2D 69 6E 74 65 72 6E 65 |tps://be-interne|
00000020 74 2E 62 65 6E 65 2D 73 79 73 74 65 6D 2E 63 6F |t.bene-system.co|
00000030 6D 2F 2F 68 70 2F 70 64 66 73 65 72 76 69 63 65 |m//hp/pdfservice|
00000040 3F 70 64 66 3D 4B 4C 57 56 57 4C 47 31 34 34 35 |?pdf=KLWVWLG1445|
00000050 30 31 33 33 39 30 32 33 36 42 53 31 36 39 32 30 |013390236BS1690|
00000060 31 35 50 08 0B 62 00 00 00 00 00 00 01 01 00 00 |15P..b..........|
00000070 00 00 00 00 00 03 00 00 00 00 00 00 00 00 00 00 |................|
00000080 00 00 00 00 00 63 |.....c|
00000086
看起来有一个包叫 xattr
看起来不错..(你需要 pip install xattr
它)
In [6]: import xattr
In [7]: x = xattr.xattr('/Users/buzzi/Projects/apimon/apimon/check/tests/resources/brus->lux dec 28.pdf')
In [8]: x.items()
Out[8]:
[(u'com.apple.metadata:kMDItemWhereFroms',
'bplist00\xa2\x01\x02_\x10Thttps://be-internet.bene-system.com//hp/pdfservice?pdf=KLWVWLG1445013390236BS169201P\x08\x0bb\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00c'),
(u'com.apple.quarantine',
'0001;562127d1;Google Chrome;BF24C900-46D5-4F95-9B7B-C36AA6B0ACC7')]
更多研究将我引向 biplist
模块。 (你需要pip install biplist
它)
>>> import biplist
>>> biplist.readPlistFromString(x.get('com.apple.metadata:kMDItemWhereFroms'))
['https://be-internet.bene-system.com//hp/pdfservice?pdf=KLWVWLG1445013390236BS169201',
'']
完成!
我有兴趣使用 python 从文件中获取更多信息。
我知道使用 os.stat(如下所示)returns 文件的信息,但我想从文件中获取其他属性,例如 'Where from?'
os.stat(filename)
posix.stat_result(st_mode=33184, st_ino=131691855, st_dev=16777220L, st_nlink=1, st_uid=501, st_gid=20, st_size=174241, st_atime=1445046864, st_mtime=1445045836, st_ctime=1445045836)
但是,这些不是我感兴趣的属性。我有兴趣获得以下所有属性(特别是 'Where from')
如何获取 'Where from' 字段?
我试过使用 os.access,但这不是我想要的 return,并且一直在搜索 documentation on os,所以我不确定我还能做什么可以尝试。
我的例子:
xattr -lp com.apple.metadata:kMDItemWhereFroms ~/Projects/apimon/apimon/check/tests/resources/brus-\>lux\ dec\ 28.pdf
com.apple.metadata:kMDItemWhereFroms:
00000000 62 70 6C 69 73 74 30 30 A2 01 02 5F 10 54 68 74 |bplist00..._.Tht|
00000010 74 70 73 3A 2F 2F 62 65 2D 69 6E 74 65 72 6E 65 |tps://be-interne|
00000020 74 2E 62 65 6E 65 2D 73 79 73 74 65 6D 2E 63 6F |t.bene-system.co|
00000030 6D 2F 2F 68 70 2F 70 64 66 73 65 72 76 69 63 65 |m//hp/pdfservice|
00000040 3F 70 64 66 3D 4B 4C 57 56 57 4C 47 31 34 34 35 |?pdf=KLWVWLG1445|
00000050 30 31 33 33 39 30 32 33 36 42 53 31 36 39 32 30 |013390236BS1690|
00000060 31 35 50 08 0B 62 00 00 00 00 00 00 01 01 00 00 |15P..b..........|
00000070 00 00 00 00 00 03 00 00 00 00 00 00 00 00 00 00 |................|
00000080 00 00 00 00 00 63 |.....c|
00000086
看起来有一个包叫 xattr
看起来不错..(你需要 pip install xattr
它)
In [6]: import xattr
In [7]: x = xattr.xattr('/Users/buzzi/Projects/apimon/apimon/check/tests/resources/brus->lux dec 28.pdf')
In [8]: x.items()
Out[8]:
[(u'com.apple.metadata:kMDItemWhereFroms',
'bplist00\xa2\x01\x02_\x10Thttps://be-internet.bene-system.com//hp/pdfservice?pdf=KLWVWLG1445013390236BS169201P\x08\x0bb\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00c'),
(u'com.apple.quarantine',
'0001;562127d1;Google Chrome;BF24C900-46D5-4F95-9B7B-C36AA6B0ACC7')]
更多研究将我引向 biplist
模块。 (你需要pip install biplist
它)
>>> import biplist
>>> biplist.readPlistFromString(x.get('com.apple.metadata:kMDItemWhereFroms'))
['https://be-internet.bene-system.com//hp/pdfservice?pdf=KLWVWLG1445013390236BS169201',
'']
完成!