【发布时间】:2017-06-05 05:23:03
【问题描述】:
我有一个 FAT(16 位)的图像,我想将图像解析为文件,以便我可以获取图像中的文件。
【问题讨论】:
-
可能不会。问题是什么?
-
我想在python中获取FAT格式的文件
我有一个 FAT(16 位)的图像,我想将图像解析为文件,以便我可以获取图像中的文件。
【问题讨论】:
就在 Python 中读取 FAT32 文件系统映像而言,Wikipedia page 具有编写只读实现所需的所有细节。
Construct 可能有一些用处。看起来他们有一个 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)
【讨论】: