超轻量级纯python包,用于检查文件是二进制文件还是文本文件。
binaryornot的Python项目详细描述
超轻量级纯python包,用于猜测文件是二进制文件还是文本文件, 使用类似于perl的pp fttext的启发式方法,并由@eliben进行分析。
- 免费软件:BSD许可证
- 文档:https://binaryornot.readthedocs.io
状态
它是有效的,人们在不同的地方使用这个软件包。但它还没有涵盖所有的边缘案件。
代码可以改进。拉请求欢迎!到目前为止,它是基于这些片段的,但这可能会改变:
- http://stackoverflow.com/questions/898669/how-can-i-detect-if-a-file-is-binary-non-text-in-python
- http://stackoverflow.com/questions/1446549/how-to-identify-binary-and-text-files-using-python
- http://code.activestate.com/recipes/173220/
- http://eli.thegreenplace.net/2011/10/19/perls-guess-if-file-is-text-or-binary-implemented-in-python/
功能
对这些文件类型进行了测试:
- 文本:.txt、.css、.json、.svg、.js、.lua、.pl、.rst
- 二进制文件:.png、.gif、.jpg、.tiff、.bmp、.ds\u store、.eot、.otf、.ttf、.woff、.rgb
对许多编码进行了测试。
为什么?
你可能在想,“我可以用两行代码来写这个?!“
其实没那么容易。这是一篇关于Perl 启发式猜测文件类型有效:http://eli.thegreenplace.net/2011/10/19/perls-guess-if-file-is-text-or-binary-implemented-in-python/
我们就是从这里开始的。随着时间的推移,我们发现了更多的边缘案例 我们的启发变得更复杂了。
另外,这个包还避免了编写和彻底测试 你的代码有各种奇怪的文件类型和编码,跨平台。
学分
- 特别感谢eli bendersky(@eliben)的写作,他解释了启发式和他的实现,这主要是基于此。
- perl的pp fttext中检查文本性的部分的源代码:https://github.com/Perl/perl5/blob/v5.23.1/pp_sys.c#L3527-L3587
历史记录
0.4.4(2017-04-13)
- 通知用户文件I/O问题。谢谢“路人”!
0.4.3(2017-04-13)
- 由于https://github.com/chardet/chardet/issues/113,限制chardet使用任何3.0.2或更高版本。谢谢@dan blanchard的快速修复!
0.4.2(2017-04-12)
- 由于https://github.com/chardet/chardet/issues/113
- 添加了PYUP徽章
- 添加了向上推送新版本的实用程序
0.4.0(2015-08-21)
- 增强了对某些二进制流和utf文本的检测。(10,11)谢谢。
- 设置AppVeyor以便在Windows上进行连续测试。谢谢@pydanny。
- 更新perl源代码实现的链接。(9)谢谢。
- 在检查中处理UnicodedeCoderror。(12)谢谢。
- 添加非常简单的基于假设的测试。(13)谢谢。
- 使用“设置”确定需求并删除多余的requirements.txt。(14)谢谢。
- 将文档状态标记添加到readme.rst。(15)谢谢。
- 在淋巴结特拉维斯做毒性试验。将pypy和python 3.4添加到tox环境中。(16)谢谢。
- 检测编码时处理lookuperror。(17)谢谢。
0.3.0(2014-05-05)
- 在源包中包含测试和文档。(6)谢谢。
- 删除不必要的shebang和可执行位。(8)谢谢。
- 只生成一次可打印扩展ascii字节的字符串。(7)谢谢。
- 使要读取的字节数可参数化。(7)谢谢。
0.2.0(2013-09-22)
- 全部重写。谢谢@ncoghlan。
0.1.1(2013-08-17)
- 测试在python 2.6、2.7、3.3、pypy下通过。
0.1.0(2013-08-17)
- pypi上的第一个版本。