lar*_*ryy 5 python macos alias file
有没有办法读取 macOS 文件别名,修改其内容(特别是目标文件路径),然后将修改后的别名写回?
例如,如果我有以下目录结构:
./one/file.txt
./two/file.txt
./file_alias
Run Code Online (Sandbox Code Playgroud)
其中file_alias
解决./one/file.txt
. 我希望能够在Python中以编程方式读取./file_alias
、确定其路径、将“一”更改为“二”,然后写出修改后的别名,覆盖./file_alias
. 完成后,file_alias
将决心./two/file.txt
。
搜索我发现了一个相关问题的答案,表明它无法完成(@Milliway 对 [1] 的回答),一个没有实质性文档的 Carbon 模块,并且声明其功能已被删除 [2],一个部分弃用的 macostools 模块依赖于 Carbon [3],一个等效的、未解答的问题(除了使用 PyObjC 的暂定建议)[4],以及最近更新的 mac_alias 包 [5],但尚未找到完成任务的方法基于其中任何一个。
mac_alias 包起初看起来很有趣,但我发现无法导入Alias
从现有别名文件构造内存中对象所需的字节(使用别名文件的二进制读取中的字节会产生错误),即使我可以构造内存中的Alias
记录并对其进行修改,无法将其写入磁盘。
我想要的机器正在运行 10.12.x (Sierra),我正在使用内置的 python 2.7.10。我发现我实际上可以导入 Carbon 和 macostools,并且怀疑 Carbon.File 可能可以提供我需要的东西,但我找不到它的任何文档。我可以升级到 High Sierra 和/或安装和使用 Python 3.x,但这些在现阶段似乎没有帮助或相关。
我意识到别名还包含一个 inode,在这样的更改之后它将变得陈旧,但幸运的是,部分由于我提交的错误以及我在 Apple 工作时的一些持久性,别名首先解析路径,仅如果路径解析失败,则回退到 inode;如果路径解析成功(并且 inode 已更改),则更新 inode。
任何帮助、建议、指示表示赞赏。
[1]如何使用 os.walk() 在 Python 中处理 OSX 别名?
[2] https://docs.python.org/2/library/carbon.html
[3] https://docs.python.org/2/library/macostools.html
[4]更改别名目标 python
[5 ] https://pypi.python.org/pypi/mac_alias
这个话题引起了我的兴趣...
但我认为这是不可能的。
查看 mac_alias 中的错误报告:https ://github.com/al45tair/mac_alias/issues/4
它指出该包处理别名记录而不是别名文件。Alias 文件是第三个版本,尚未经过逆向工程。
它指向别名文件上的此信息:http://indiestack.com/2017/05/resolving-modern-mac-alias-files/
还有他们旧的 bitbucket 上的这个线程:https://bitbucket.org/al45tair/mac_alias/issues/3/support-for-version-3-aliases
这指向这个死页面(谢谢,archive.org)https://web.archive.org/web/20170222235430/http://sysforensics.org/2016/08/mac-alias-data-objects/
以及可以通过此包读取一些信息的信息: https: //pypi.python.org/pypi/plistutils/,其中有一堆关于在其 github 上读取别名结构的文档
但这些都没有达到你想要的效果。对不起。
归档时间: |
|
查看次数: |
2815 次 |
最近记录: |