1

哪些 python 库可用于获取 MacOSX 文件系统上的详细文件属性?我有一种预感,它使用了该os模块,但我无法通过 python 访问这些属性。

我想要访问的最重要的属性是文件“种类”。请注意,我不是在谈论扩展,而是在下面的屏幕截图中的第 4 列(取自这个 SuperUser question)。例如,当我遍历此目录中的这些文件时,如何获得“纯文本文档”作为 license.txt 的种类?我的应用程序是一个文件处理脚本,应该从 keynote/pages/numbers 包文件中识别目录。

关于重复的说明:

另请注意,我已经看到了这个特殊的 SO question,它与一般 *nix 文件系统有关。我的问题是 MacOS 文件系统的这个问题的一个子集,它可能具有该问题中未讨论的一些特质。如果用户可以提供如何 使用如何获取文件类型的示例python-magic,那么这将提供比上述文章更有用的解决方案。

在此处输入图像描述

4

1 回答 1

0

您可以从 os.stat() 中一次性获取最后修改日期和文件大小。

文件类型更复杂,因为至少有两种不同的方法可以从操作系统获取人类可读的描述。为此,您需要的库是 pyobjc,它将允许您 a) 查询 NSWorkspace 和 LaunchServices 以获取与 UTI 相关的数据,或 b) 为单个文件创建 NSURL 并查询它们的资源类型。我相信 b) 更接近 Finder 所做的。

这是一个说明这两种方法的示例:

from AppKit import NSWorkspace
from LaunchServices import UTTypeCopyDescription

from Cocoa import NSURL, NSURLLocalizedTypeDescriptionKey

from datetime import datetime
import os

for f in os.listdir("."):
    uti = NSWorkspace.sharedWorkspace().typeOfFile_error_(f, None)[0]
    desc = UTTypeCopyDescription(uti)

    url = NSURL.fileURLWithPath_(f)
    urlType = url.getResourceValue_forKey_error_(None, NSURLLocalizedTypeDescriptionKey, None)[1]

    sr = os.stat(f)
    size = sr.st_size
    date = datetime.fromtimestamp(sr.st_mtime).strftime('%Y-%m-%d %H:%M:%S')

    print("%-20s size=%s modified=%s uti=%s desc=%s url=%s" % (f, size, date, uti, desc, urlType))
于 2018-05-03T08:29:57.960 回答