<p>正如另一个答案所提到的,文档中的macos意味着osx之前的版本。在经典的Mac OS中,<code>stat</code>是被模拟的,而Python <code>stat</code>实际上意味着OS X上的<code>stat</code></p>
<p>因此,您无法获得类型和创建者操作系统统计。相应的低级调用是<code>getattrlist</code>,但这不是Python包装的(也不应该真正使用它)。通过打印,您可以确切地看到<code>stat</code>返回的内容:</p>
<pre><code>>>> import os
>>> s = os.stat('foo')
>>> s
posix.stat_result(st_mode=33152, st_ino=18294505, st_dev=16777218L, st_nlink=1,
st_uid=501, st_gid=501, st_size=0, st_atime=1379052292, st_mtime=1379052292,
st_ctime=1379052308)
</code></pre>
<p>让我们在<code>foo</code>上设置一个类型和创建者来测试:</p>
^{pr2}$
<p>python2.x中最简单的答案是<code>MacOS.GetCreatorAndType</code>。然而,它在3.x中消失了,它使用的底层机制也被弃用。如果你的目标仅仅是为自己完成某件事,那么一定要用它。在</p>
<pre><code>>>> import MacOS
>>> MacOS.GetCreatorAndType('foo')
('CREA', 'TYPE')
</code></pre>
<p>一种更能证明未来的机制是使用PyObjC,它在Python 3.x上工作,不使用不推荐使用的OS x API:</p>
<pre><code>>>> from Foundation import NSFileManager, NSFileHFSCreatorCode, NSFileHFSTypeCode
>>> attributes = NSFileManager.defaultManager().attributesOfItemAtPath_error_('foo', None)[0]
>>> attributes[NSFileHFSTypeCode]
1415139397L
>>> attributes[NSFileHFSCreatorCode]
1129465153L
</code></pre>
<p>这些都是整数,因为PyObjC没有四个字符代码的映射(也没有适当的元数据来理解它得到了什么)。下面是一个快速映射函数,用于检索四个字符的字符串:</p>
<pre><code>>>> def decode(f): return ''.join(chr(f >> i * 8 & 0xff) for i in xrange(3,-1,-1))
...
>>> decode(attributes[NSFileHFSCreatorCode])
'CREA'
>>> decode(attributes[NSFileHFSTypeCode])
'TYPE'
</code></pre>
<p>(如果您使用的是python3,请将上面的<code>xrange</code>替换为<code>range</code>。)</p>
<p>请注意,一般情况下,类型/创建者在OSX中使用不多;它们的功能已被文件扩展名、UTI、MIME类型、每用户和每个文档应用程序绑定所取代。在</p>