开发工具【免费下载链接】jcCLI tool and python library that converts the output of popular command-line tools, file-types, and common strings to JSON, YAML, or Dictionaries. This allows piping of output to tools like jq and simplifying automation scripts.项目地址https://gitcode.com/gh_mirrors/jc/jc点击查看免费下载导读zipinfo是 Unix/Linux 上查看 ZIP 压缩包内部清单的经典命令但其输出是固定宽度的文本表格难以直接用于脚本处理与数据分析。jcJSON Convert项目提供的zipinfo解析器可将zipinfo archive的输出转换为结构化的 JSON 数组每个归档包含大小、条目数、压缩率等元信息以及逐文件的权限位、压缩方法、时间戳等明细字段。读完本文你将掌握zipinfo解析器的 CLI 与 Python 模块两种调用方式、完整的输出 Schema以及它在多归档、含空格路径等边界场景下的源码级处理原理。一、解析器定位与能力边界zipinfo解析器是 jc 内置的命令输出解析器之一官方定义在 docs/parsers/zipinfo.md其源码位于 jc/parsers/zipinfo.py。在使用前需要明确两个重要边界不支持任何zipinfo选项文档原文明确标注 Nozipinfooptions are supported即解析器只针对默认格式的输出生效若通过-1、-l、-t等选项改变了输出格式将无法正确解析兼容平台为 linux 与 darwin解析器元数据中compatible [linux, darwin]在 zipinfo.py 中声明其他平台调用时会输出兼容性警告除非传入quietTrue。该解析器由 Matt J 贡献版本 1.2属于command标签类解析器自动识别的 magic command 为zipinfo。二、CLI 用法把 zipinfo 输出变成 JSON2.1 管道方式$ zipinfo archive | jc --zipinfo这是最典型的用法将zipinfo命令的输出通过管道交给 jc--zipinfo指定解析器。以官方文档中的示例档案为例$ zipinfo log4j-core-2.16.0.jar | jc --zipinfo -p其中-p让 JSON 输出带缩进便于人工阅读输出结构如下节选[ { archive: log4j-core-2.16.0.jar, size: 1789565, size_unit: bytes, number_entries: 1218, number_files: 1218, bytes_uncompressed: 3974141, bytes_compressed: 1515455, percent_compressed: 61.9, files: [ { flags: -rw-r--r--, zipversion: 2.0, zipunder: unx, filesize: 19810, type: bl, method: defN, date: 21-Dec-12, time: 23:35, filename: META-INF/MANIFEST.MF }, ... ] } ]2.2 交互式输入方式$ jc zipinfo此时 jc 等待标准输入粘贴或键入zipinfo的输出后按 Ctrl-D 结束输入即输出解析后的 JSON。2.3 与 jq 联动由于输出已是合法 JSON可直接管道到jq做过滤与统计例如提取所有defNDeflate 压缩方法的文件列表或在自动化脚本中把归档元数据存入数据库、生成报告。三、Python 模块用法除了 CLIjc 同时是 Python 库可在代码中直接解析zipinfo输出import jc result jc.parse(zipinfo, zipinfo_command_output)zipinfo_command_output为包含zipinfo原始输出的字符串返回值是「字典列表」List of Dictionaries每个字典对应一个归档。注意返回的是 Python 对象而非 JSON 字符串需要序列化时可自行调用json.dumps()。四、输出 Schema 详解文档给出了完整的输出结构顶层是归档对象数组每个归档对象字段如下字段类型含义archivestring归档文件名档案路径sizeinteger归档文件本身的字节大小size_unitstring大小单位示例中为bytesnumber_entriesinteger归档中的条目总数number_filesinteger归档中的文件数bytes_uncompressedinteger全部条目解压后的字节总数bytes_compressedinteger全部条目压缩后的字节总数percent_compressedfloat压缩率百分比如 61.9 表示压缩了 61.9%filesarray逐条目的明细列表files数组中每个条目的字段字段类型含义flagsstring权限位如-rw-r--r--文件或drwxr-xr-x目录zipversionstring创建该条目所需的 ZIP 规范版本如2.0、2.1、3.0zipunderstring压缩程序所依赖的主机系统Unix 下为unxfilesizeinteger条目未压缩大小字节typestring文件类型标识详见下文-t列解读methodstring压缩方法如defNDeflate与storStore不压缩datestring条目最后修改日期格式如21-Dec-12timestring条目最后修改时间格式如23:35filenamestring归档内完整路径如META-INF/MANIFEST.MF对照 tests/fixtures/rhel-8/zipinfo.out 可验证原始文本中每行条目的 9 个字段恰好映射为上述 9 个键而flags的第一字符-/d区分文件与目录。五、源码级实现原理5.1 三段式文本切割从 zipinfo.py 的解析逻辑可以看出每个归档的原始输出被分为三部分处理首行Archive: name使用line.replace(Archive: , , 1)去掉前缀。注意只替换一次、且不按空格分割这是为了兼容路径中带空格的档案名源码注释明确说明 dont split on spaces for files/paths with spaces次行Zip file size: size unit, number of entries: n按空白分词后取出size、size_unit并去掉尾逗号与number_entries末行n files, u bytes uncompressed, c bytes compressed: p%取出number_files、bytes_uncompressed、bytes_compressed并将percent_compressed的尾部%剥离。中间的逐条目文本行则被补上一行表头flags zipversion zipunder filesize type method date time filename交给 jc 通用的jc.parsers.universal.simple_table_parse做固定列表格解析得到files数组。5.2 多归档分割zipinfo支持一次传入多个归档输出中每个归档之间以空行分隔末尾还有一行形如3 archives were successfully processed.的汇总。解析器在 zipinfo.py 中先删掉这行汇总再以空行为界把每个归档切成独立的行组最终每个归档生成一个顶层字典。这一点在 tests/fixtures/osx-10.14.6/zipinfo-multi.out 中有完整样例同时包含jc1.zip、testzip.zip、micro.zip三个归档对应的预期 JSON 见 tests/fixtures/osx-10.14.6/zipinfo-multi.json。5.3 类型转换原始文本中的数字都是字符串_process()阶段在 zipinfo.py 中统一处理bytes_compressed、bytes_uncompressed、number_entries、number_files、size、filesize通过jc.utils.convert_to_int转为整数percent_compressed通过jc.utils.convert_to_float转为浮点数归档级与files条目级都执行同样的转换逻辑。这保证了输出 Schema 中声明的integer/float类型在结果中真实生效而非保持字符串。5.4 空数据处理若传入空字符串jc.utils.has_data(data)判定无数据后直接返回[]对应测试test_zipinfo_nodata见 tests/test_zipinfo.py。六、边界场景与测试验证仓库在 tests/test_zipinfo.py 中提供了四类回归测试覆盖了解析器设计时考虑的主要边界测试场景输入夹具验证点无数据—空输入返回[]单归档RHEL 8tests/fixtures/rhel-8/zipinfo.out1218 条目的 jar 包完整解析结果与 tests/fixtures/rhel-8/zipinfo.json 一致多归档macOS 10.14.6tests/fixtures/osx-10.14.6/zipinfo-multi.out空行分割与汇总行剔除逻辑路径含空格tests/fixtures/rhel-8/zipinfo-space-in-name.out档案名path/to file/with spaces/...jar不被错误截断其中「路径含空格」用例直接对应 5.1 节中首行解析只替换一次、不按空格分割的实现细节可见文档、源码与测试三者相互印证。七、使用建议与限制保持默认输出格式不要给zipinfo传-1、-l、-t等改变排版/内容的选项否则解析结果会出错输出可继续加工拿到 JSON 后可进一步配合jq筛选大文件按filesize排序、统计压缩率异常条目或按method分组统计压缩方法使用情况类型语义number_entries与number_files在多数场景下数值相同但语义不同——前者是归档内全部条目含目录后者对应汇总行中的文件计数分析时按需取用平台前提解析器声明的兼容平台为 Linux 与 macOS跨平台脚本中建议先确认目标主机可用zipinfo且输出为默认格式。综上jc 的zipinfo解析器通过首行/次行/末行定位 通用表格解析 类型转换的组合把 Unix 生态中最常见的压缩包清单文本变成可直接查询、统计与落库的结构化数据是构建归档管理自动化脚本的实用基础组件。赞分享开发工具【免费下载链接】jcCLI tool and python library that converts the output of popular command-line tools, file-types, and common strings to JSON, YAML, or Dictionaries. This allows piping of output to tools like jq and simplifying automation scripts.项目地址https://gitcode.com/gh_mirrors/jc/jc点击查看免费下载相关推荐jc 解析器实战使用 jc --gpg 将 gpg --with-colons 输出转换为 JSONjc 解析器实战使用 jc gpg 将 gpg with colons 输出转换为 JSON 导读 本文介绍 jcJSON Convert项目中的 gpg开发工具OpenProject 如何按版本规划产品路线图RoadmapOpenProject 如何按版本规划产品路线图Roadmap OpenProject 的 Roadmap 是一个按版本Version汇总工作包Wo开发工具jc 解析器实战使用 jc --sfdisk 将 sfdisk 分区表输出转换为 JSONjc 解析器实战使用 jc sfdisk 将 sfdisk 分区表输出转换为 JSON 导读 jc 是一个把常用命令行工具输出、文件类型和通用字符串转换为 J开发工具上一篇GS Quant高盛开源量化金融工具包的完整使用指南下一篇rkdeveloptool 开源项目教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
Delta模拟器自定义皮肤完全指南:3步换好控制器外观,免费又简单 Delta模拟器自定义皮肤完全指南:3步换好控制器外观,免费又简单 【免费下载链接】Delta Delta is an all-in-one classic video game emulator for non-jailbroken iOS devices. 项目地址: https://gitcode.com/GitHub_Trending/delt/Delta
你要在… · 2026/9/26 2:02:43
欧姆龙PLC通信协议全解析:HostLink/FINS/Modbus-RTU 干工控这些年,欧姆龙PLC的通信协议算是我交学费最多的地方之一。从CP1H的串口折腾到NJ/NX的EtherNet/IP,从HostLink到FINS再到Modbus-RTU,每一套协议都有不少让人抓狂的细节:节点号对不上、帧格式错一位、波特率设错、地址偏移算错… · 2026/9/26 2:02:43
用LangFlow搭建流量包推荐智能客服:RAG与对话记忆实战 简介:基于LangFlow框架的零代码大模型应用开发平台项目包,面向希望快速搭建智能客服与RAG应用的开发者、产品经理及运维人员。项目以“流量包推荐智能客服”为实战场景,完整演示对话记忆、检索增强生成(RAG)和多种模型… · 2026/9/26 2:37:20
游戏加加监控配置与帧数显示排查全攻略:从原理到实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 2:37:20
基于迁移学习的昆虫识别系统实战:ResNet50+PyTorch+Flask部署 简介:基于Python开发的昆虫识别系统,面向毕业设计、课程设计及实际项目开发,提供高精度识别能力与完整工程源码。系统采用模型迭代方式持续优化,最新版已支持2037个昆虫分类单元,Top1/Top5准确率分别达0.922/0.981&… · 2026/9/26 2:37:20
ng-zorro-antd 表单动态增减表单项实战:基于 FormArray 实现增删字段、行内布局与校验提交 UI组件前端 【免费下载链接】ng-zorro-antd Angular UI Component Library based on Ant Design 项目地址: https://gitcode.com/gh_mirrors/ng/ng-zorro-antd 点击查看 免费下载 动态增加、减少表单项(Dynamic Form Item)是数据录入类页面最… · 2026/9/26 2:37:20
abogen:3步把EPUB变成带同步字幕的有声书 abogen:3步把EPUB变成带同步字幕的有声书 【免费下载链接】abogen Generate audiobooks from EPUBs, PDFs and text with synchronized captions. 项目地址: https://gitcode.com/GitHub_Trending/ab/abogen
想做有声书却不想订录音棚?abogen 走的… · 2026/9/26 2:37:13
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍 简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践 一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46