从OS X文件参考URL别名获取路径(file:///。file / id = ...)

K3-*_*rnc 6 url macos shell path

在Apple Mac OS X上的PyQt4中,我们以以下格式获取到拖放文件的文件引用URL

file:///.file/id=123456.78901
Run Code Online (Sandbox Code Playgroud)

有趣的是,这不是有效的文件URL,或者至少在大多数应用程序中不能透明地解析- /.file/id=...文件系统中没有文件。

仅使用外壳,如何将这个NSURL或文件引用或别名(或任何被称为)解除引用到文件系统上文件的有效路径?

小智 5

在 Swift 中,您可以使用 URL.standardized 从参考 URL 获取有效路径。因此,在 Swift 4 中 - 要从拖放文件中获取文件名,您可以执行以下操作...

let fileType = NSPasteboard.PasteboardType (kUTTypeFileURL as String)

extension NSPasteboardItem {
    func fileURL ()->URL? {
        if let refURL = self.string(forType: fileType) {
            return URL (fileURLWithPath: refURL).standardized
        }
        return nil
    }
}
Run Code Online (Sandbox Code Playgroud)


K3-*_*rnc 3

可以使用默认 OS X 安装上可用的AppleScriptosascript解释器,使用以下脚本运行:

osascript -e 'get posix path of posix file "file:///.file/id=123.456" -- kthxbai'
Run Code Online (Sandbox Code Playgroud)

印刷/Users/josh/Downloads/paste-10837081.py