一个非常nb的 Python 命令行解析库

Python模块之ncclient 一、简介 此模块是是netconf协议的客户端,可与netconf服务端进行交互 二、实验环境   1.操作系统:win10   2.python版本:python3.6.6   3.ncclient模块版本:0.6.3   4.Juniper软件版本:Junos 15.1X49-D30.3(Junos 12版本不支持Netconfi协议) 三、安装ncclien... 阅读详情

在 Python 中,命令行解析库有非常多的选择方案,系统自带的 模块有 argparse,有 Flask 作者写的 click,但是 argparse 使用起来啰嗦, 要经历解析器初始化、参数定义、解析一套流程。例如:

# -*- coding: utf-8 -*-
# arg_test.py

import argparse

def counter(file_type=None):
    return {file_type: 100}

# 初始化解析器
parser = argparse.ArgumentParser()
# 定义参数
parser.add_argument("-f", "--file", help="统计指定文件类型")
# 解析
args = parser.parse_args()
print(counter(args.file))

运行:

$ python arg_test.py -f python
{'python': 100}

而 click 则是以装饰器的形式作用在目标函数中,要侵入函数本身,本质上还是对 argparse 的一种改进,并没有太多创新,算是一种改良作品

# -*- coding: utf-8 -*-

import argparse
import click

@click.command()
@click.option("-f", "--file", help="统计制定文件类型")
def counter(file=None):
    click.echo({file: 100})

if __name__ == '__main__':
    print(counter())

运行:

$ python firetest.py -f python
{u'python': 100}

接下来要介绍的这个命令行解析工具非常牛逼,把命令行工具做到了极致,算是一种颠覆式创新,一行代码能把函数导出到命令行窗口,这个工具叫Python-fire,可能经常写命令行工具的人知道,该项目是 Google 开源的 Python 库(可能是 Google 工程师的 Side Project,因为项目主页申明说它不是 Google 官方项目),名字就像一团🔥。

安装

pip install fire

用法1: fire.Fire()

直接在程序中调用 fire.Fire(),不需要修改目标函数,fire 会把当前模块下的所有对象导出到命令行中

# firetest.py

import fire

def foo(name):
    return 'foo {name}!'.format(name=name)

def bar(name):
    return "bar {name}".format(name=name)

if __name__ == '__main__':
    fire.Fire()

运行:

# 调用方式:python [文件名] [函数名] [参数]

# 函数名后面直接跟参数值
$ python firetest.py foo hello
foo hello!
# 也可以显示地先指定参数名,再跟参数值
$ python firetest.py bar --name hello
bar hello!

用法2: fire.Fire(<fn>)

Fire 可以指定某个函数导出到命令行

import fire

def foo(name):
    return 'foo {name}!'.format(name=name)

if __name__ == '__main__':
    fire.Fire(foo)

运行:

# 调用方式:python [函数名] [参数]
$ python firetest.py hello
foo hello!

当 Fire 接收函数 foo 作为参数时,只加载 foo 函数到命令行中,此时,在命令行中运行时也无需再指定函数名字,只需要指定参数就好。

用法3:fire.Fire(<dict>)

Fire 不仅可以接收函数,还可以接收字典对象作为参数,可在字典中配置那些函数需要导出到命令行中。例如,有加减乘3个函数,我们可以选择性的选择其中2个导出到命令行:

import fire

def add(x, y):
    return x + y

def multiply(x, y):
    return x * y

def subtract(x, y):
    return x - y

if __name__ == '__main__':
    fire.Fire({
        'add': add,
        'subtract': subtract,
    })

运行:

$ python firetest.py add 1 4
5
$ python firetest.py subtract 1 4
-3
$ python firetest.py multiply 1 4
# multiply 会报错,因为没有导出

用法4:fire.Fire(<object>)

Fire 还可以接收类的实例对象

import fire

class Calculator(object):

  def add(self, x, y):
    return x + y

  def multiply(self, x, y):
    return x * y

if __name__ == '__main__':
  calculator = Calculator()
  fire.Fire(calculator)

使用方式还是和前面的一样

$ python firetest.py add 10 20
30
$ python firetest.py multiply 10 20
200

在这里还是要推荐下我自己建的Python学习群:609616831,群里都是学Python的,如果你想学或者正在学习Python ,欢迎你加入,大家都是软件开发党,不定期分享干货(只有Python软件开发相关的),包括我自己整理的一份2020最新的Python进阶资料和零基础教学,欢迎进阶中和对Python感兴趣的小伙伴加入! 

基于Wio LTE Cat M1/NB-IoT的低功耗资产追踪器开发实战 低功耗广域网(LPWAN)技术是物联网领域的关键基础设施,旨在为海量低功耗、远距离连接的设备提供经济高效的通信解决方案。其核心原理在于优化无线通信协议,通过降低数据传输速率、延长设备休眠时间以及采用高效的信号调制方式,在保障基本连接能力的同时,将终端功耗降至极低水平。这项技术的核心价值在于解决了传统蜂窝网络(如2G/4G)在物联网应用中功耗高、成本高的痛点,为需要长续航、广覆盖的应用场景铺平了道路。典型的应用场景包括智能表计、环境监测、智慧农业以及资产追踪等。本文聚焦于资产追踪这一具体场景,深入探讨如何利用 阅读详情

相关推荐

从抓包到应用:Python解析pcapng文件实战指南

本文详细介绍了如何使用Python解析pcapng文件,从抓包到应用层数据的全栈解析实战。通过python-pcapng库实现高效解析,涵盖文件结构、关键块类型解析、以太网帧到TRDP协议的应用层处理,并提供完整代码示例和性能优化技巧,助力网络数据分析自动化。

weixin_29042035的博客 149

nbclient 开源项目教程

nbclient 开源项目教程 1. 项目的目录结构及介绍 nbclient 项目的目录结构如下: nbclient/ ├── docs/ ├── nbclient/ │ ├── __init__.py │ ├── client.py │ ├── exceptions.py │ └── ... ├── tests/ ├── .gitignore ├── .pre-commit-co...

gitblog_00487的博客 405

软件工程毕业设计选题指南:50个实战项目与核心原则解析

软件工程的核心在于通过系统化的工程方法,将需求转化为稳定、可维护的软件产品。其原理涵盖从需求分析、系统设计到编码实现、测试部署的完整生命周期,强调架构设计、代码质量与团队协作。这一学科的技术价值在于能够高效、可靠地构建复杂系统,解决实际业务问题。在应用场景上,无论是开发高并发的电商系统、智能推荐算法,还是构建微服务架构或物联网平台,都离不开扎实的软件工程实践。本文聚焦于毕业设计这一具体场景,针对软件工程专业学生常见的选题迷茫,提供了涵盖Web全栈、人工智能、物联网等六大方向的50个精选实战题目,并深入剖析了

weixin_34396103的博客 516

Jupyter nbclient 项目常见问题解决方案

Jupyter nbclient 项目常见问题解决方案 项目基础介绍 Jupyter nbclient 是一个用于执行 Jupyter Notebook 的客户端库。它最初是 nbconvert 项目中的 ExecutePreprocessor 组件,后来被提取出来作为一个独立的库,以便更容易地更新和被其他项目导入。nbclient 允许用户在不同的执行上下文中运行 Jupyter Noteboo...

gitblog_00730的博客 719

HTTP请求走私攻击:原理、利用与防御全解析

HTTP协议作为Web通信的基石,其请求边界的确定依赖于Content-Length或Transfer-Encoding头。然而,当前端服务器(如负载均衡器、CDN)与后端应用服务器对同一请求的解析策略存在差异时,便会产生协议歧义,这种基础设施层的解析不一致性构成了HTTP请求走私攻击的技术原理。该攻击的价值在于它能完全绕过应用层的安全防护(如WAF),直接针对请求传输管道进行利用,危害极大。在应用场景上,攻击者可通过精心构造的歧义请求,实现会话劫持、缓存投毒、权限绕过等高危操作。本文聚焦于CL.TE、TE

weixin_34121304的博客 432

基于大语言模型的网络安全异常检测实践指南

异常检测是网络安全运营中识别潜在威胁的核心技术,其原理在于通过分析系统或用户的行为模式,识别出偏离正常基线的活动。传统方法依赖规则或统计模型,在面对新型、复杂的攻击模式时存在局限。大语言模型凭借其强大的上下文理解和模式识别能力,为这一领域带来了新的技术价值。它能够学习正常行为的复杂模式,并识别出微小的、不符合常规的偏差,从而在无需复杂特征工程的情况下,实现对未知威胁的一定泛化能力。在应用场景上,LLM可作为二级分析引擎,对传统系统过滤后的低置信度事件进行深度上下文分析,或用于用户与实体行为分析,以发现内部威

cmff98425的博客 431

推荐项目:nbclient,让笔记本执行无界限

推荐项目:nbclient,让笔记本执行无界限 在数据科学和机器学习的广阔天地里,Jupyter Notebook已经成为开发、教学和数据分析不可或缺的工具。而今天,我们要向您隆重介绍一个能够进一步增强Notebook体验的开源项目——nbclient。 项目介绍 nbclient是为程序化执行Jupyter笔记本打造的一把利剑,它允许开发者和研究者在多种环境下执行Notebook代码。不仅仅是受...

gitblog_00040的博客 990

MSP430固件烧录全解析:从FET调试到量产与Bootloader升级

在嵌入式系统开发中,固件烧录是将编译后的程序代码写入微控制器非易失性存储器的关键步骤,其核心原理是通过特定的硬件接口和通信协议对芯片内部存储器进行擦除、编程与校验。这一技术是连接软件与硬件的桥梁,确保了产品功能的正确实现,其价值直接体现在开发效率、生产成本控制以及产品全生命周期的可维护性上。固件烧录广泛应用于从原型开发、实验室调试到工厂量产、现场设备升级等场景。本文聚焦于广泛应用的MSP430系列微控制器,深入剖析其固件烧录的完整技术链条。针对**FET**这一核心开发调试工具,详解其作为协议转换器和调试代

weixin_30629653的博客 575

自己动手实现命令行解析器

一、介绍 嵌入式里面经常会自己做命令行,这里分享一个命令解析器代码实现 二、代码实现 mycmd.c /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 头文件区 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ #include <stdio.h>

锅锅的博客 1186

实用IEC104模拟器:从协议原理到SCADA联调实战

IEC 60870-5-104规约是电力自动化系统中主站与远动终端通信的核心协议,基于TCP/IP传输,具有实时性强、可靠性高的特点。在变电站改造或新站投运时,常因现场设备未就绪而卡住联调进度,此时借助IEC104模拟器可以快速生成遥信、遥测、遥控等报文,替代真实终端进行协议验证。模拟器支持单点/双点遥信、短浮点遥测、总召唤、电度召唤及各种控制命令,覆盖绝大多数调试场景,还能通过报文日志和异常帧注入精准定位通信问题。合理使用模拟器不仅能大幅缩短SCADA系统联调周期,还能在主站侧提前验证数据正确性与遥控流程

weixin_42530458的博客 309

关于st-link usb communication error的解决方法

一,问题 在MDK5中使用ST-Link下载时出现: st-link usb communication error Error:flash download failed - target dll has been canceled 二,解决过程 通过网上查阅得知大部分方法都是通过更换老版本的固件包以及操作硬件解决,我试了绝大部分方法都不好使,且老版本的包没有找到,于是试着更新一下固件包,但是更...

qq_43557907的博客 3万+

为什么选择BioPandas?分子结构数据分析的高效Python工具对比指南 [特殊字符]

作为生物信息学和计算生物学领域的研究者,你是否曾为处理复杂的蛋白质结构文件而烦恼?面对传统的PDB、MOL2等分子结构文件格式,如何高效地进行数据分析成为许多科研工作者的挑战。今天,我们将深入探讨一个强大的Python工具——BioPandas,它能够将分子结构数据转换为pandas DataFrame格式,让你像处理表格数据一样轻松分析蛋白质和小分子结构! ## 什么是BioPandas?分子

gitblog_00268的博客 451

STM32 烧录报错Invalid ROM Table

STM32 烧录报错Invalid ROM Table

热爱科技,物联,程序开发等 1733

并行分布式框架:Celery、rq、funboost

Celery是一个异步任务的调度工具,也可以叫做 "分布式任务队列(Distributed Task Queue)"。

freeking101的博客 5万+

Java本地AI推理初体验:Jlama+LangChain4j构建离线问答系统

Jlama 是专为 Java 生态设计的现代化大型语言模型(LLM)推理引擎,旨在让开发者无需依赖外部服务即可直接在 Java 应用中运行本地化模型推理。本文将结合Jlama + langchain4j 实现一个本地可运行的简单问答Demo。

2501_92589102的博客 407

ACM论文LaTeX模板解析(三)| 文章顶部信息(Top matter))Part 1

文章顶部信息(Top matter))Part 1,文章类型、作者信息等

FreshManInC的博客 4853

从SAX到DOM:libxml2解析模式对比及性能优化指南

libxml2是一款功能强大的XML解析库,支持SAX和DOM两种核心解析模式。本文将深入对比这两种模式的工作原理、适用场景,并提供实用的性能优化技巧,帮助开发者在项目中做出更合适的技术选择。 ## 📚 解析模式核心差异 ### SAX:事件驱动的流式解析 SAX(Simple API for XML)是一种基于事件回调的解析方式。当解析器扫描XML文档时,会在遇到特定结构(如元素开始、文本

gitblog_00877的博客 991

fanuc机器人KAREL中 函数的应用

本次课程讲解编程的思路。很多的同学都玩过积木,一个一个的模块逐渐累积起来,通过彼此之间的相互联系,最终形成一个完整的整体。其实编程也是这样。 将一个对象根据其特点进行模块化拆分,尤其是一些特点非常相似的内容,将其变成一个模块。然后通过传递参数,实现不同的功能,这就是模块化编程。

haier123888的博客 2744

嵌入式秋招备战指南:从C语言到RTOS,打造高竞争力简历与面试策略

嵌入式系统开发是连接软件与硬件的核心技术领域,其核心在于通过微控制器(MCU)和实时操作系统(RTOS)实现对物理设备的精准控制。从原理上看,开发者需要深入理解计算机体系结构、操作系统调度机制以及硬件通信协议,才能编写出高效、可靠的嵌入式软件。这项技术的价值在于其广泛应用于物联网、智能家居、工业自动化等关键场景,是实现万物互联的基石。对于即将参加秋招的开发者而言,掌握以STM32为代表的MCU开发、精通FreeRTOS等实时操作系统的任务调度与通信机制,并能够将这些知识融入具体的项目实践,是构建核心竞争力的

weixin_34248023的博客 339

制作你自己的yolov5数据集并进行训练

项目地址:make-your-yolov5_dataset 一、数据集标注软件 labelImg labelMe 精灵标注助手 更多的标注工具你可以去看:深度学习图像标注工具汇总 、 十个最常用深度学习图像/视频数据标注工具 、 百度一下 在这里我选择使用labelImg 二、数据集标注 下载labelImg 解压,直接打开labelimg.exe labelImg标注数据 标注完成后即可获得VOC格式(生成.xml文件)的数据 目录结构: dataset │ ├─Annotations .

年少的勇气已经用完,剩下的就是三思而后行 1万+

基于Simulink的电动车PMSM能量泄放与回收系统仿真设计

摘要 本文设计了一个基于Simulink的电动车PMSM能量泄放与回收系统仿真模型。系统采用分层建模方案,包含永磁同步电机(PMSM)矢量控制、电池管理和泄放功率计算等核心模块。通过详细的参数计算和MATLAB脚本实现,模拟了电动车在制动时的能量回收过程。重点研究了泄放电阻的控制策略,提出基于母线电压和电池SOC的多目标优化算法,确保系统在保护硬件安全的同时最大化能量回收效率。仿真模型包含完整的数学推导和模块搭建指南,为电动车能量管理系统设计提供了有效的仿真验证平台。

huanghm88的专栏 193

用SIMD位掩码加速CSV解析:从逐字节到数GB/s

在数据处理流水线中,CSV解析是最常见的基础操作之一。当文件规模达到GB级、行数数以千万计时,传统的逐字节分支判断会因分支预测失败和内存访问开销,将CPU吞吐限制在几百MB/s。SIMD(单指令多数据)技术允许一次并行处理16、32甚至64字节,将逗号、引号、换行的位置检测转化为高效的位掩码运算,再配合标量状态机处理字段边界与引号转义,可使解析吞吐量跃升至数GB/s。本文从字节分类的基本原理出发,详细展示了如何使用AVX2指令生成位掩码、通过位运算遍历命中位置,并完成正确的字段切分。这类优化思路广泛应用于E

weixin_34056162的博客 387

微信小程序、H5微信公众号网页JSAPI:解决报错requestMerchantTransfer:fail:internal error(使用wx.requestMerchantTransfer错误)

如何解决requestMerchantTransfer:fail:internal error,微信小程序wx.requestMerchantTransfer报错,微信公众号H5网页使用jssdk调用wx.requestMerchantTransfer报错,JSAPI调起用户确认收款报错errMsg:“requestMerchantTransfer:fail:internal error“,微信小程序/H5 调起确认收款界面,JSAPI调起用户确认收款,微信公众号(H5),用户发起提现,商家转账给用户,用户

✅ 精选推荐文章 4968

MCU后端开发全指南:从协议设计到工程实践

从MCU资源受限的底层逻辑切入,阐述传统REST架构在嵌入式场景的局限,提出基于MQTT/CoAP/自定义二进制的端-管-云架构。围绕数据序列化、时间同步、安全认证、流量模型等关键环节,结合STM32H7的FOC控制数据聚合与STM32F103的ADC物理量换算实例,说明如何设计低开销、可兼容的物联网后端。帮助读者理解MCU后端与Web后端的本质差异,并掌握从设备接入到OTA升级的完整落地路径。

weixin_34015336的博客 335

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

MCU设备后端开发:从MQTT到协议适配的实战指南

嵌入式开发与Web后端的技术交汇日益频繁,MCU设备(如STM32、ESP32)的联网需求催生了针对资源受限客户端的后端架构设计。理解MCU的RAM、Flash、网络抖动等基础约束,是设计可靠设备接入服务的起点。以MQTT为代表的轻量级消息协议,凭借极小的报文开销、异步推送和遗嘱机制,成为设备通信的首选;而HTTP则在固件升级、设备激活等低频交互中扮演补充角色。后端需采用异步消息管道(如Redis Stream)解耦设备上报与业务处理,并通过CBOR或Protobuf等紧凑序列化格式降低传输成本。针对具体场

weixin_33885676的博客 383

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

python编写语法解析器_Python PLY解析器语法

所有人我正在用python PLY编写一个非常简单的解析器。它主要是完成这项工作,但是对于许多输入行,我从yacc得到一个语法错误。下面是lexer和parser代码,为了更容易测试,稍作修改:tokens = ('VAR', 'NUMBER', 'CLOSE', 'JUNK')# Tokenst_VAR = r'%[mM]\['t_CLOSE = r'\]'t_JUNK = r...

weixin_39824834的博客 622

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

上一篇: Python新手必看面试题:如何正确读写文件
下一篇: Python100行代码搞定支付宝新年五福!
python阿喵
博客等级 码龄6年 169粉丝 127原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值