python - 如何在 Python 中检测文件是否为二进制(非文本)文件?

标签 python file binary

如何在 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/

相关文章:

c++ - 使用递归的二进制搜索

python - 如何使用 sqlalchemy 或 SQLObject 建立需要 CA-CERT 的 mysql 连接

python - 使用条件合并日期范围内某个日期的两个数据框

java - 从 jar 中读取资源文件

linux - 重新链接匿名(未链接但打开)文件

c++ - 将二进制字符串/文件内容从 c++ 传递到 Node js

c++ - 在字符串中将十进制转换为二进制时出错

python - 使用命名参数作为变量

python - numpy 沿第一个轴添加

java - 将二维数组写入字符串,然后写入 .txt 文件 - Java