读写Macintosh HFS卷库

machfs的Python项目详细描述


这是一个用于创建和检查的库 HFS-格式 磁盘映像。mac特有的概念,如resource forkstype/creator codes是一流的 公民。

python接口

python api很简单。aVolume或aFolder的内容是 使用索引运算符[]访问。在处理文件系统时, 它的整个高级内容作为python对象存储在内存中。

from machfs import Volume, Folder, File

v = Volume()

v['Folder'] = Folder()

v['Folder']['File'] = File()
v['Folder']['File'].data = b'Hello from Python!\r'
v['Folder']['File'].rsrc = b'' # Use the macresources library to work with resource forks
v['Folder']['File'].type = b'TEXT'
v['Folder']['File'].creator = b'ttxt' # Teach Text/SimpleText

with open('FloppyImage.dsk', 'wb') as f:
    flat = v.write(
        size=1440*1024, # "High Density" floppy
        align=512, # Allocation block alignment modulus (2048 for CDs)
        desktopdb=True, # Create a dummy Desktop Database to prevent a rebuild on boot
        bootable=True, # This requires a folder with a ZSYS and a FNDR file
        startapp=('Folder','File'), # Path (as tuple) to an app to open at boot
    )
    f.write(flat)

with open('FloppyImage.dsk', 'rb') as f:
    flat = f.read()
    v = Volume()
    v.read(flat) # And you can read an image back!

命令行界面

此包还安装MakeHFSDumpHFS实用程序,用于 使用本机文件系统上的文件夹。简而言之,资源分叉 存储在rez格式的.rdump文件中,类型和创建者代码 存储在8字节的.idump文件中。无可否认,这种储存方法 不是很漂亮,但是它将更改公开到没有 需要特定于Mac的软件。例如,git可以跟踪添加 以及清除资源。具有TEXT类型的文件假定为 utf-8用unix风格(lf)行结尾编码,并转换为 带有mac样式(cr)行结尾的mac-os-roman编码。

这两个命令都有一个--help参数来显示它们的选项。

为什么?

我想要一个自动化的,可复制的方法来编译遗留的macos软件。 没有任何当前的操作系统完全支持hfs, libhfs/hfsutils(一个c库 和命令行包装器)是最有能力的实现。这个 实现者选择在一个假的“挂载”文件系统上模拟posix i/o。 虽然这对于内存非常有限的机器很重要,但是 在增量系统中维护一致的hfs数据结构 操作是一项复杂的任务,需要大量低级的 代码。对实际文件系统的频繁I/O也会发生。当前机器 有内存和循环要烧掉,因此 高级编程语言似乎是一个合理的折衷方案。作为一个 结果,machfslibhfs,并且更易于维护,在 表演。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何下载多个。java中的PDF文件   linux Java打开文件,形成实际用户主页~/   java如何在时间线内维护TableView选择?   java Hibernate注释@Where vs@WhereJoinTable   Java读/写访问异常FileNotFoundException(访问被拒绝)   继承在Java中是否可以扩展最后一个类?   Android HttpClient使用java使应用程序崩溃。lang.OutOfMemoryError:pthread_create   java为什么即使我在proguardproject中添加了jar文件,也会出现这种错误。txt?   如果添加JButton,swing Java FocusListener和KeyListener将无法工作   java使用solrj检索json格式的SolrDocument   使用Microsoft Visual Studio代码进行Java编程   java NoClassDefFoundError:org/apache/log4j/Logger   哈希集中包含相等对象的java   java中的参数化构造函数是否需要有一个主体?   java类似于NetBeans不必要的代码检测器   Java实践问题   java Blackberry“[projectname].调试文件丢失”和“I/O错误:找不到程序”jar