跳转到主要内容

Python文件识别库

项目描述

build status pre-commit.ci status

identify

Python文件识别库。

给定一个文件(或关于文件的一些信息),返回一组标准化的标签,以标识文件是什么。

安装

pip install identify

用法

具有磁盘上的文件

如果您有一个实际的磁盘文件,您可以获得尽可能多的信息(所有其他方法的超集)

>>> from identify import identify
>>> identify.tags_from_path('/path/to/file.py')
{'file', 'text', 'python', 'non-executable'}
>>> identify.tags_from_path('/path/to/file-with-shebang')
{'file', 'text', 'shell', 'bash', 'executable'}
>>> identify.tags_from_path('/bin/bash')
{'file', 'binary', 'executable'}
>>> identify.tags_from_path('/path/to/directory')
{'directory'}
>>> identify.tags_from_path('/path/to/symlink')
{'symlink'}

当使用磁盘上的文件时,执行的检查包括

  • 文件类型(文件、符号链接、目录、套接字)
  • 模式(它是可执行的吗?)
  • 文件名(主要基于扩展名)
  • 如果是可执行的,则读取shebang并解释解释器

如果您只有文件名

>>> identify.tags_from_filename('file.py')
{'text', 'python'}

如果您只有解释器

>>> identify.tags_from_interpreter('python3.5')
{'python', 'python3'}
>>> identify.tags_from_interpreter('bash')
{'shell', 'bash'}
>>> identify.tags_from_interpreter('some-unrecognized-thing')
set()

作为cli

$ identify-cli --help
usage: identify-cli [-h] [--filename-only] path

positional arguments:
  path

optional arguments:
  -h, --help       show this help message and exit
  --filename-only
$ identify-cli setup.py; echo $?
["file", "non-executable", "python", "text"]
0
$ identify-cli setup.py --filename-only; echo $?
["python", "text"]
0
$ identify-cli wat.wat; echo $?
wat.wat does not exist.
1
$ identify-cli wat.wat --filename-only; echo $?
1

识别LICENSE文件

identify 还有一个用于确定文件中包含哪种许可证的api。此例程大致基于 licensee(github使用的ruby gem来确定存储库的许可证)使用的方案。

identify 使用的方案如下

  1. 删除版权行
  2. 标准化所有空白
  3. 返回任何精确匹配项
  4. 返回与编辑距离最接近的项(其中编辑距离 < 5%)

要使用api,请通过 pip install identify[license] 安装

>>> from identify import identify
>>> identify.license_id('LICENSE')
'MIT'

license_id函数的返回值是一个SPDX标识符。目前许可证来源自choosealicense.com

工作原理

调用tags_from_path执行以下操作

  1. 类型是文件、符号链接还是目录?如果不是文件,则在这里停止。
  2. 它是可执行的吗?添加适当的标签。
  3. 我们是否识别该文件的扩展名?如果是,添加适当的标签,然后在这里停止。这些标签包括二进制/文本。
  4. 查看文件的前X个字节。使用这些信息来判断它是二进制还是文本,并添加适当的标签。
  5. 如果被识别为文本,尝试读取并解释shebang,并添加适当的标签。

按照设计,这意味着我们不需要部分读取那些我们已经识别了文件扩展名的文件。

项目详情


发布历史 发布通知 | RSS源

下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码发行版

identify-2.6.1.tar.gz (99.1 kB 查看哈希值)

上传时间 源代码

构建发行版

identify-2.6.1-py2.py3-none-any.whl (99.0 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下支持