跳转到主要内容

分析数据文件中的常见结构

项目描述

structa是一个小型、半魔法般的实用工具,用于辨别大型数据文件的“整体结构”。通常这类似于JSON格式的面向文档的数据库、数据库转储的CSV文件或YAML文档。

用法

从命令行使用

structa <filename>

提供常规的--help--version开关以获取更多信息。完整的文档也可能有助于理解各种开关!

示例

在太空中的人API显示了目前太空中的人数以及他们的名字和航天器名称

curl -s http://api.open-notify.org/astros.json | structa

输出

{
    'message': str range="success" pattern="success",
    'number': int range=10,
    'people': [
        {
            'craft': str range="ISS".."Tiangong",
            'name': str range="Akihiko Hoshide".."Thomas Pesquet"
        }
    ]
}

Python包索引(PyPI)为包提供JSON API。您可以将几个包的JSON输入到structa中,以了解这些记录的整体结构(当structa在单次调用中给定多个输入时,它假定它们有共同的来源)

for pkg in numpy scipy pandas matplotlib structa; do
    curl -s https://pypi.ac.cn/pypi/$pkg/json > $pkg.json
done
structa numpy.json scipy.json pandas.json matplotlib.json structa.json

输出

{
    'info': { str: value },
    'last_serial': int range=11.9M..13.1M,
    'releases': {
        str range="0.1".."3.5.1": [
            {
                'comment_text': str,
                'digests': {
                    'md5': str pattern="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
                    'sha256': str pattern="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
                },
                'downloads': int range=-1,
                'filename': str,
                'has_sig': bool,
                'md5_digest': str pattern="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
                'packagetype': str range="bdist_wheel".."sdist",
                'python_version': str range="2.4".."source",
                'requires_python': value,
                'size': int range=39.3K..118.4M,
                'upload_time': str of timestamp range=2006-01-09 14:02:01..2022-03-10 16:45:20 pattern="%Y-%m-%dT%H:%M:%S",
                'upload_time_iso_8601': str of timestamp range=2009-04-06 06:19:25..2022-03-10 16:45:20 pattern="%Y-%m-%dT%H:%M:%S.%f%z",
                'url': URL,
                'yanked': bool,
                'yanked_reason': value
            }
        ]
    },
    'urls': [
        {
            'comment_text': str range="",
            'digests': {
                'md5': str pattern="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
                'sha256': str pattern="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
            },
            'downloads': int range=-1,
            'filename': str,
            'has_sig': bool,
            'md5_digest': str pattern="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
            'packagetype': str range="bdist_wheel".."sdist",
            'python_version': str range="cp310".."source",
            'requires_python': value,
            'size': int range=47.2K..55.6M,
            'upload_time': str of timestamp range=2021-10-27 23:57:01..2022-03-10 16:45:20 pattern="%Y-%m-%dT%H:%M:%S",
            'upload_time_iso_8601': str of timestamp range=2021-10-27 23:57:01..2022-03-10 16:45:20 pattern="%Y-%m-%dT%H:%M:%S.%f%z",
            'url': URL,
            'yanked': bool,
            'yanked_reason': value
        }
    ],
    'vulnerabilities': [ empty ]
}

Ubuntu 安全通告数据库包含 Ubuntu 版本中所有安全问题的列表(警告:分析此数据库需要一些时间,并且在此过程中会消耗大约 1GB 的 RAM)。

curl -s https://usn.ubuntu.com/usn-db/database.json | structa

输出

{
    str range="1430-1".."4630-1" pattern="dddd-d": {
        'action'?: str,
        'cves': [ str ],
        'description': str,
        'id': str range="1430-1".."4630-1" pattern="dddd-d",
        'isummary'?: str,
        'releases': {
            str range="artful".."zesty": {
                'allbinaries'?: {
                    str: { 'version': str }
                },
                'archs'?: {
                    str range="all".."source": {
                        'urls': {
                            URL: {
                                'md5': str pattern="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
                                'size': int range=20..1.2G
                            }
                        }
                    }
                },
                'binaries': {
                    str: { 'version': str }
                },
                'sources': {
                    str: {
                        'description': str,
                        'version': str
                    }
                }
            }
        },
        'summary': str,
        'timestamp': float of timestamp range=2012-04-27 12:57:41..2020-11-11 18:01:48,
        'title': str
    }
}

项目详情


下载文件

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

源代码分发

structa-0.4.tar.gz (49.6 kB 查看散列)

上传时间 源代码

构建分发

structa-0.4-py3-none-any.whl (51.8 kB 查看散列)

上传时间 Python 3

由...