您实际上可以将文件加载到字符串中,然后0xffc0
使用str.find()
方法在该字符串中搜索字节序列。它适用于任何字节序列。
执行此操作的代码取决于几件事。如果您以二进制模式打开文件并且使用的是Python 3(这两种都是该方案的最佳实践),则需要搜索一个字节字符串(而不是字符串),这意味着您必须在字符串前面加上b
。
with open(filename, 'rb') as f:
s = f.read()
s.find(b'\xff\xc0')
如果您在Python 3中以文本模式打开文件,则必须搜索一个字符串:
with open(filename, 'r') as f:
s = f.read()
s.find('\xff\xc0')
尽管没有特别的理由这样做。与以前的方法相比,它没有任何优势,并且如果您使用的平台对二进制文件和文本文件的处理方式不同(例如Windows),则很可能会引起问题。
Python 2不会区分字节字符串和字符串,因此,如果您使用的是该版本,则是否包含b
in都没有关系b'\xff\xc0'
。而且,如果您的平台将二进制文件和文本文件(例如Mac或Linux)相同地对待,则使用'r'
还是将其'rb'
用作文件模式都没有关系。但是我仍然建议您使用上面第一个代码示例之类的东西,以保持向前兼容性- 万一您确实切换到Python 3,就不那么容易解决了。