当前位置: 首页 > news >正文

用Python实现简易的命令行工具

在日常编程和系统管理中,命令行工具以其高效、便捷的特点深受开发者喜爱。Python作为一门功能强大且简洁易用的编程语言,为我们实现自定义的命令行工具提供了丰富的资源和便利。本文将带你逐步了解如何使用Python打造简易但实用的命令行工具。

一、基础库介绍

sys库获取命令行参数

在Python中,sys库是与Python解释器交互的接口,其中sys.argv可以获取命令行传递给Python脚本的参数。sys.argv是一个列表,sys.argv[0]通常是脚本本身的名称,从sys.argv[1]开始往后是实际传递的参数。

import sys

print("脚本名称:", sys.argv[0])
if len(sys.argv) > 1:
    print("传递的参数:", sys.argv[1:])

上述代码首先打印出脚本自身的名称,然后检查是否有额外参数传入。如果有,就打印出除脚本名称外的所有参数。
在这里插入图片描述

这种方式是获取命令行参数最基础的方法,但对于复杂的参数处理,它显得不够灵活。

argparse库解析命令行参数


argparse库是Python标准库中用于解析命令行参数的模块,它能帮助我们轻松定义参数、选项,并处理参数解析过程中的各种情况,提供了更结构化和用户友好的方式来处理命令行参数。

参数和选项的区别

  1. 参数(Positional Arguments)
  • 定义:在命令行中按位置顺序提供的输入值,是命令行工具期望的必需或可选的主要输入。当我们运行命令行工具时,必须按照顺序在特定位置提供文件名。
  • 特点:通常用于指定工具操作的核心对象或目标,不可或缺(除非定义为可选)。在命令行中必须要输入的参数。而且参数没有特定的标识前缀,在命令行中直接跟在工具名称后面按顺序列出。例如:python file_viewer.py sample.txt,这里的sample.txt就是位置参数。
  1. 选项(Options)
  • 定义:也叫标志(Flags),是命令行中用于修改工具行为或提供额外功能的特殊参数。它们以短横线(-)或双短横线(–)作为前缀。
  • 特点:选项一般是可选的,用户可以根据需求决定是否使用。它们提供了一种灵活的方式来调整工具的功能。选项的作用在于为工具增加不同的操作模式或附加功能。

搞清楚参数和选项的区别后,就可以开始看下示例了。

import argparse

parser = argparse.ArgumentParser(description='简单的命令行工具示例')
parser.add_argument('filename', help='要处理的文件名')
args = parser.parse_args()

print('你输入的文件名是:', args.filename)

首先创建一个ArgumentParser对象,通过description参数为工具添加描述信息。

接着使用add_argument方法定义一个位置参数filename,并通过help参数为该参数添加说明。

最后,parse_args方法解析命令行参数,并将结果存储在args对象中。我们可以通过args.filename获取传递的文件名。
在这里插入图片描述
那好像也看不到描述信息啊,对的,如果需要看的话,只要加上-h选项就可以了。
在这里插入图片描述

二、实现简单的文件查看工具

读取并输出文件内容

让我们基于前面的知识,创建一个简单的命令行工具,用于查看文件的内容。

import argparse

http://www.dtcms.com/a/98768.html

相关文章:

  • 【Java集合夜话】第9篇下:深入剖析TreeMap源码:红黑树实现原理与面试总结(建议收藏)
  • day1_Flink基础
  • 【Git教程】将dev分支合并到master后,那么dev分支该如何处理
  • Promise使用
  • 【题解】AtCoder At_abc399_d [ABC399D] Switch Seats
  • .NET开发基础知识21-30
  • [GXYCTF2019]禁止套娃1 [GitHack] [无参数RCE]
  • Matplotlib基本使用
  • 数据库监控 | openGauss监控解析
  • 小程序API —— 56页面处理函数 - 下拉刷新
  • 前端常问的宏观“大”问题详解(二)
  • 编译原理课设工作日志
  • 一些练习 C 语言的小游戏
  • 探索Scala基础:融合函数式与面向对象编程的强大语言
  • 在 Unreal Engine 5 中制作类似《鬼泣5》这样的游戏时,角色在空中无法落地的问题可能由多种原因引起。
  • C++作用域辨识详解
  • 高等数学-第七版-上册 选做记录 习题7-4
  • linux基本命令(1)--linux下的打包命令 -- tar 和gzip
  • 电子电气架构 --- 域控架构下,汽车连接器的挑战和变化
  • Ethernet/IP转Modbus剖析库卡机器人同S7-1200PLC双向通讯的技术
  • OpenAI API - Realtime 实时
  • 高速电路中的存储器应用与设计四
  • 【JavaScript】合体期功法——DOM(一)
  • Python 序列构成的数组(元组不仅仅是不可变的列表)
  • 质因数个数--欧拉函数中统计纯素数
  • 直播推流全面指南
  • 【设计模式】单例模式
  • 安卓分发平台一站式APP应用内测平台
  • ros2--功能包
  • 如何备份你的 Postman 所有 Collection?