我有一个 FAT(16 位)的图像,我想将图像解析为文件,以便我可以获取图像中的文件。
2 回答
就在 Python 中读取 FAT32 文件系统映像而言,Wikipedia 页面包含编写只读实现所需的所有详细信息。
构造可能有一些用处。看起来他们有一个您可以尝试扩展的 FAT16 示例( https://github.com/construct/construct/blob/master/construct/examples/formats/filesystem/fat16.py )。
实际上,我遇到了类似的情况,我需要 Python 中的 FAT12/16/32 支持。在网上搜索您可以找到各种实现(例如maxpat78/FATtools、 em- /grasso或hisahi/PyFAT12)。
当时这些库都不能通过 PyPI 获得,或者缺少我需要的功能,所以(完全公开)我决定自己写,但我会尽可能客观地总结一下:
pyfatfs支持 FAT12、FAT16 以及 FAT32,包括 VFAT(长文件名),并且可以通过 pip 作为纯 Python 包安装(不需要和/或包含mtools等原生依赖项)。它实现了PyFilesystem2的功能,这是一个跨不同文件系统实现(SSH、AWS S3、OSFS 主机目录传递……)的基本文件操作框架。除此之外,pyfatfs 也可以独立使用(没有 PyFilesystem2),以防您需要进行更多低级操作(操作目录/文件条目、更改磁盘属性、格式化磁盘/图像、操作 FAT 等)。
例如,通过 PyFilesystem2 将文件从软盘映像复制到主机:
import fs
fat_fs = fs.open_fs("fat://my_diskette.img") # Open disk image
host_fs = fs.open_fs("osfs:///tmp") # Open '/tmp' directory on host
fs.copy.copy_dir(fat_fs, "/", host_fs, "/") # Copy all files from the disk image to the host_fs filesystem (/tmp directory on host)