Python、十六进制和普通文件签名
Python, Hex and common file signatures
我从系统还原中获得了一些文件,这些文件在文件的前面填充了奇数位的数据,这使得它在打开时变得乱七八糟。我有一个我收集的文件签名的文本文件,其中包含目前这样表示的信息:
Sig_MicrosoftOffice_before2007= \xD0\xCF\x11\xE0\xA1\xB1\x1A\xE1
我打算读取文本文件并使用数据在损坏文件的数据中识别正确的 header,然后删除它之前的所有内容——希望之后留下一个可读文件。不过,我一直在研究如何最好地将这些数据以可读格式导入 python。
我的第一次尝试只是从文件中读取值,但正如 python 所做的那样,它将反斜杠表示为转义字符。这是实现我需要的最佳方法吗?我是否需要考虑以其他方式表示文本文件中的数据?或者也许在字典里?如果您能提供任何帮助,我们将不胜感激。
您可以使用 string_escape
编解码器 (Python 2) 或 unicode_escape
编解码器 (Python 3 或者当您有给我们 Python 2):
中的 Unicode
>>> r'\xD0\xCF\x11\xE0\xA1\xB1\x1A\xE1'
'\xD0\xCF\x11\xE0\xA1\xB1\x1A\xE1'
>>> r'\xD0\xCF\x11\xE0\xA1\xB1\x1A\xE1'.decode('string_escape')
'\xD0\xCF\x11\xE0\xA1\xB1\x1A\xE1'
我从系统还原中获得了一些文件,这些文件在文件的前面填充了奇数位的数据,这使得它在打开时变得乱七八糟。我有一个我收集的文件签名的文本文件,其中包含目前这样表示的信息:
Sig_MicrosoftOffice_before2007= \xD0\xCF\x11\xE0\xA1\xB1\x1A\xE1
我打算读取文本文件并使用数据在损坏文件的数据中识别正确的 header,然后删除它之前的所有内容——希望之后留下一个可读文件。不过,我一直在研究如何最好地将这些数据以可读格式导入 python。
我的第一次尝试只是从文件中读取值,但正如 python 所做的那样,它将反斜杠表示为转义字符。这是实现我需要的最佳方法吗?我是否需要考虑以其他方式表示文本文件中的数据?或者也许在字典里?如果您能提供任何帮助,我们将不胜感激。
您可以使用 string_escape
编解码器 (Python 2) 或 unicode_escape
编解码器 (Python 3 或者当您有给我们 Python 2):
>>> r'\xD0\xCF\x11\xE0\xA1\xB1\x1A\xE1'
'\xD0\xCF\x11\xE0\xA1\xB1\x1A\xE1'
>>> r'\xD0\xCF\x11\xE0\xA1\xB1\x1A\xE1'.decode('string_escape')
'\xD0\xCF\x11\xE0\xA1\xB1\x1A\xE1'