如何在 Python 中判断文件是否为二进制(非文本)文件?
我在 Python 中搜索大量文件,并不断在二进制文件中找到匹配项。这使得输出看起来非常困惑。
我知道我可以使用 grep -I
,但我对数据所做的工作超出了 grep 所允许的范围。
在过去,我只会搜索大于 0x7f
的字符,但是 utf8
之类的字符在现代系统上是不可能的。理想情况下,解决方案会很快。
最佳答案
另一种方法based on file(1) behavior :
>>> textchars = bytearray({7,8,9,10,12,13,27} | set(range(0x20, 0x100)) - {0x7f})
>>> is_binary_string = lambda bytes: bool(bytes.translate(None, textchars))
例子:
>>> is_binary_string(open('/usr/bin/python', 'rb').read(1024))
True
>>> is_binary_string(open('/usr/bin/dh_python3', 'rb').read(1024))
False
关于python - 如何在 Python 中检测文件是否为二进制(非文本)文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/898669/