iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python开发简单的命令行工具简介
  • 176
分享到

python开发简单的命令行工具简介

Python 官方文档:入门教程 => 点击学习

摘要

目录介绍python标准库sys模块命令行工具概念基础示例使用介绍可选参数设置必选参数设置列表参数传入设置互斥参数默认参数设置介绍 Python模块argparse,这是一个命令行选

介绍

Python模块argparse,这是一个命令行选项,参数和子命令的解释器,使用该模块可以编写友好的命令行工具,在程序中定义好需要的参数,argparse将弄清楚如何解析 sys.argv中的参数。argparse模块还支持自动生成帮助和用法信息,当模块解析到无效参数时,还可以发出错误。

python标准库sys模块

sys.agv				#命令行参数List,第一个元素时程序本身路径
sys.exit(n)		#退出程序,正常退出时exit(0)
sys.version 	#获取Python解释程序的版本信息
sys.maxint 		#最大的Int值
sys.path			#返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.stdin			#输入线管
sys.stdout		#输出相关
sys.stderror	#错误相关

命令行工具

我们使用过很多的命令行工具,那么python开发出的命令行工具,能列举出哪些呢?
其实python本身就是一个命令行工具,在cmd中使用python --help,能输出python的帮助语句,这就是命令行工具解析参数后输出的一个例子。
再有,pip 也是一个典型的例子,在使用pip时,不同的子命令可以达成不同的效果。
当然知道和做到相距实在太过遥远,我也很难写出一个python或pip。

概念

argparse是一个较大的模块,提供了很多功能,它的文档相当详细和完整,包含大量示例。所以学习该模块最好的教程就是官方文档,argparse( https://docs.python.org/zh-cn/3/library/argparse.html),那么为什么我没去看呢,一方面是我并不需要复杂的功能,另一方面我的英语阅读能力不足以让我完全理解该文档。我们必须承认,英语水平分开了普通的技术人员,因此我正在努力提升英语水平。
开发一个命令行工具前,我们首先需要知道一个命令行工具包含了哪些内容,它又是怎么识别我们提供的参数的,识别后又是怎么提供输出的,对待错误的选项,它又是如何调整的。
因此,官网使用了 ‘ls’ 这个命令来介绍命令行工具的几个概念:

  • ls 是一个即使在运行的时候没有提供任何选项,也非常有用的命令。在默认情况下他会输出当前文件夹包括的内容。
  • 如果我们想要使用比它默认提供的更多功能,我们需要告诉该命令更多信息。我们可以指定所谓的位置参数,之所以这样命名,是因为程序应该如何处理该参数值,完全取决于它在命令行出现的文职。更能体现这个概念的命令如 cp ,它最基本的用法是 cp SRC DEST,第一个位置参数指的是你想要复制的,第二个位置参数指的是你想要复制到的位置。
  • 现在假设我们想要改变这个程序的行为。使用 **ls -l ,**我们可以输出更多的信息,在这个例子中,-l 被称为可选参数。
  • **–help **通常被用来输出帮助文档,它是非常有用的,因为当你遇到一个你从未使用过的程序时,你可以通过阅读它的帮助文档来弄清楚它是如何运行的。

了解了这些,我们通过几个例子可以更好的说明这个模块是如何解析从命令行获取的参数的,并且解析出的参数又是如何被程序使用的。

基础

命令行参数解析很容易,但是它也可以被加入很多参数,注入很多定义,这让最后的程序变得不堪入目,为了防止我的朋友,也就是你,在开始就头痛,我首先带来一个我认为最简单的案例。

示例

所有解析都应当配有示例,并展示对比来说明程序的行为有哪些改变。

argparse使用主要有四个步骤:

  • 导入argparse包
  • 创建 ArgumentParser() 参数对象
  • 调用 add_argument() 方法往参数对象中添加参数
  • 使用 parse_args() 解析添加参数的参数对象,获得解析对象
  • 程序其他部分,当需要使用命令行参数时,使用解析对象.参数获取

在未使用argparse模块前,我编写了这样一个python文件。

print("hello world!")

我们很熟悉这个案例,毫无疑问我们清楚python运行该文件时会得到什么样的输出,当我们在终端运行这个python文件demo1时,我们会使用以下命令。

$ python demo1.py
hello world!

是的,我们看到在命令行中,运行该文件输出了我们想要的结果,一般情况下,我们需要python文件输出某个值时,要么我们将该值在文件中写死,就像上面这个例子一样,我们已经在文件中将想要的输出写死在文件中,这个值在未被输出时就已经在程序中被决定。如果我们需要用户在终端中向程序提供某些值,来改变程序的行为,得到不同的输出,我们常用的手段是使用input,让程序读入终端的输入来达到这样的效果。不过这样做仍然需要手动的输入,如果是自动化程序,那么可以使用参数直接带入需要的变量将大大减少这样的交互。
接下来我将演示如何使用argparse来完成一个简单的参数解析。

import argparse #导入argparse包

parse = argparse.ArgumentParser() #创建参数对象
parse.add_argument('hello') #向参数对象中添加参数
args = parse.parse_args() #解析参数对象获得解析对象
if __name__ == '__main__':
   print(args.hello)

让我们来运行一下这个程序

$ python demo1.py helloworld
helloworld

很简单,这是一个容易的例子,需要注意的是,由于没有指定,所以命令行参数输入默认按顺序复制,顺序不同的话得到的结果将不同。
接下来我将带入一些官网上的案例,来继续解释argparse的一些进阶示例。

使用介绍

  • –help 选项,也可缩写为 -h,是唯一一个可以直接使用的选项(即不需要指定该选项的内容)。指定任何内容都会导致错误。即便如此,我们也能直接得到一条有用的用法信息。

add_argument()方法,定义如何解析命令行参数,对于该方法,参数解释如下:

  • name or flags - 选项字符串的名字或者列表,例如 foo 或者 -f, --foo。
  • action - 命令行遇到参数时的动作,默认值是 store。
    • store_const,表示赋值为const;
  • – append,将遇到的值存储成列表,也就是如果参数重复则会保存多个值;
  • – append_const,将参数规范中定义的一个值保存到一个列表;
  • – count,存储遇到的次数;此外,也可以继承 argparse.Action 自定义参数解析;
  • nargs - 应该读取的命令行参数个数,可以是
  • 具体的数字,或者是?号,当不指定值时对于 Positional argument 使用 default,对于 Optional argument 使用 const
  • 或者是 * 号,表示 0 或多个参数;
  • 或者是 + 号表示 1 或多个参数。
  • const - action 和 nargs 所需要的常量值。
  • default - 不指定参数时的默认值。
  • type - 命令行参数应该被转换成的类型。
  • choices - 参数可允许的值的一个容器
  • required - 可选参数是否可以省略 (仅针对可选参数)。
  • help - 参数的帮助信息,当指定为 argparse.SUPPRESS 时表示不显示该参数的帮助信息.
  • metavar - 在 usage 说明中的参数名称,对于必选参数默认就是参数名称,对于可选参数默认是全大写的参数名称.
  • dest - 解析后的参数名称,默认情况下,对于可选参数选取最长的名称,中划线转换为下划线.

可选参数设置

通过在参数名前加 --, 设置为可选参数,如果未输入,则使用default默认值,若为设置default则默认赋值 None

parse.add_argument('-n', '--name', type=str, metavar='name', help='New flavor name')

引用名,可以缩短参数名,简化命令行参数输入;也就是使用-n或者-name可以获得一样的效果

必选参数设置

需要一个必选参数时,则设置required=True,这时,无论参数是否时可选参数,都必须输入

列表参数传入设置

添加narg='+' 这样可以在命令行中添加若干个参数,传入后将被添加到列表中。

互斥参数

也就是add_mutually_exclusive_group方法,这让我们可以添加两个互相排斥的参数,也就是只能选择其中一个参数添加

默认参数设置

set_defaults()可以设置一些参数的默认值

到此这篇关于python开发简单的命令行工具简介的文章就介绍到这了,更多相关python开发简单的命令行工具内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: python开发简单的命令行工具简介

本文链接: https://www.lsjlt.com/news/193778.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python开发简单的命令行工具简介
    目录介绍python标准库sys模块命令行工具概念基础示例使用介绍可选参数设置必选参数设置列表参数传入设置互斥参数默认参数设置介绍 Python模块argparse,这是一个命令行选...
    99+
    2023-02-01
    python开发命令行工具 python制作命令行工具 Pyth编写命令行工具
  • Android 命令行工具简介
    关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、商业变现、人工智能等,希望大家多多支持。 目录 一、导...
    99+
    2023-10-04
    android 命令行 log
  • 简单介绍我的开源小工具:SanicDB
    SanicDB 是为 Python的异步 Web 框架 Sanic 方便操作MySQL而开发的工具,是对 aiomysql.Pool 的轻量级封装。Sanic 是异步IO的Web框架,同时用异步IO读写MySQL才能更大发挥它的效率。虽然...
    99+
    2023-01-30
    开源 小工具 简单
  • python flask开发的简单基金查询工具
    目录项目地址:1) 启动方法2) web查看方法3) 功能说明:4) 展示:代码项目地址: https://github.com/guodongggg/fund 1) 启动方法 (非必须)修改new.csv,参照t...
    99+
    2022-06-02
    python 基金查询 flask 基金查询
  • mysql prompt命令的简单介绍
    这篇文章主要介绍“mysql prompt命令的简单介绍”,在日常操作中,相信很多人在mysql prompt命令的简单介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”my...
    99+
    2022-10-18
  • Golang 基于flag库实现一个简单命令行工具
    目录前言flag 库FlagSet需求拆解实现 weather flag天气数据打印获取源数据数据转换运行效果小结前言 Golang 标准库中的 flag 库提供了解析命令行选项的能...
    99+
    2022-11-11
  • Linux下rm命令的简单介绍
    本篇内容介绍了“Linux下rm命令的简单介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!rm 的那些事首先,这条命令是用来清除 ...
    99+
    2023-06-05
  • MYSQL的简单操作命令介绍
    这篇文章主要介绍“MYSQL的简单操作命令介绍”,在日常操作中,相信很多人在MYSQL的简单操作命令介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MYSQL的简单操作命令...
    99+
    2022-10-18
  • 如何用Plumbum开发Python命令行工具
    如何用Plumbum开发Python命令行工具,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。主要介绍如何使用 Plumbum CLI 工具包来开发 Python 命令行应用程序...
    99+
    2023-06-17
  • Python 简单的多线程执行命令
    Tools.py#!/usr/bin/python #coding:utf-8 import threading import subprocess import os import sys sshport = 13131 log_path...
    99+
    2023-01-31
    多线程 命令 简单
  • 简单介绍Python遗传算法Geatpy工具箱
    本篇文章给大家带来了关于Python的相关知识,其中主要为大家介绍了Python遗传算法Geatpy工具箱使用介绍,有需要的朋友可以借鉴参考下,希望能够有所帮助,下面一起来看一下。前端(vue)入门到精通课程:进入学习【相关推荐:Pytho...
    99+
    2022-09-09
  • Python画图工具Matplotlib库常用命令简述
    目录1. 简单例程柱状图2. 读取exal方法2.1  数据处理常用库:pandas2.2 提取列表数组3. 论文图片的类型和格式4. 柱状图扩展4.1 堆叠柱状图5. P...
    99+
    2022-11-12
  • 使用Rust开发命令行工具
    生成二进制文件,将其扔到环境变量的path下即可~ 用rust打造实时天气命令行工具[1] 找到合适的API 使用该api[2] 如请求 api.openweathermap.org/da...
    99+
    2023-08-30
    后端
  • PHP直播功能开发的技术和工具简介
    随着互联网和移动互联网的快速发展,直播这一应用越来越受到人们的关注和青睐。而在直播应用中,PHP是一种常用的编程语言,因此,PHP直播功能的开发技术和工具成为了开发者们探索的焦点。本文将介绍PHP直播功能开发的技术和工具,帮助初学者和开发者...
    99+
    2023-05-22
    PHP 直播功能开发 技术工具简介
  • Git 管理工具 SourceTree 的使用(上手简单,不熟悉git命令的开发者必用)
    目录 一、SourceTree 概述 二、SourceTree 使用方法 1. 克隆 Git 仓库至本地 2. 推送本地的文件至远程仓库 3. 创建/切换/合并分支 4. 版本回退 一、SourceTree 概述         Sou...
    99+
    2023-10-07
    git github 前端 后端 团队开发
  • Laravel5.4快速开发简书网站——3-2PHPstorm+squePro开发工具介绍
    下面我们介绍两款开发工具的使用,一个是PHP的开发工具, PHPStorm PHPStorm是开发PHP的利器,这个工具是Windows和Mac下都有的工具,我说一下PHPStorm是我开发PHP的...
    99+
    2023-09-15
    php ide 开发语言
  • Linux下载工具wget和axel的简单介绍
    本篇内容介绍了“Linux下载工具wget和axel的简单介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Wget Wget是一个十分常用...
    99+
    2023-06-10
  • 一文掌握Java开发工具Maven(简单上手)
    目录Maven1、安装maven1.1 Windows安装1.2 Linux安装1.3 简单配置1.4 idea配置2、Maven简单上手3、Maven生命周期4、POM文件详解4....
    99+
    2022-11-12
  • MyCAT的命令行监控工具介绍
    MyCAT命令行监控工具介绍 (1).查看系统运行情况 mysql>show @@server; (2).查看ThreadPool信息 mysql>show @@threadpool; ...
    99+
    2022-10-18
  • 详解Node.js如何开发命令行工具
    前言 Node 给前端开发带来了很大的改变,促进了前端开发的自动化,我们可以简化开发工作,然后利用各种工具包生成生产环境。如运行sass src/sass/main.scss dist/css/main.c...
    99+
    2022-06-04
    命令行 详解 工具
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作