python入门笔记——命令行参数及简单示例

命令行参数介绍

在使用python开发脚本,作为一个运维工具,或者其他工具需要接受用户参数运行时,就可以用到命令行传参的方式
可以给使用者提供一个比较友好的交互体验
python中可以用sys模块中的sys.argv来获取命令行参数
然后可以在pycharm界面最下面的terminal或者cmd来操作运行

import sys
print('参数个数为:',len(sys.argv),'个参数')
print('参数列表',str(sys.argv))

这里用命令行直接输出(python test.py)的结果是:

参数个数为: 1 个参数
参数列表 ['test.py']

当然,你也可以在后面添加,如python test.py 1 3,结果是:

参数个数为: 3 个参数
参数列表 ['test.py', '1', '3']

argv返回命令行参数是一个列表,第一个元素是py文件的文件名,如果只想获取参数而不需要文件名,sys.argv也支持python字符串中的切片操作,可修改代码如下:

import sys
print('参数个数为:',len(sys.argv),'个参数')
print('参数列表',str(sys.argv[1:]))

sys.argv只提供了较简单的命令参数获取方式,没有提供命令提示,无法提供给使用者以help帮助,而argparse模块可以轻松编写对用户友好的命令行界面,某程序定义了它需要的参数,argparse将找出如何解析这些参数
argparse模块还会自动生成帮助和用法信息,并在用户给出无效参数时发出错误信息

import argparse
parse = argparse.ArgumentParser(prog='test.py',description='编写自命令行的文件')
# 简单给几个参数示范一下,具体每个参数的意义可以按住ctrl点击函数名查看
'''
以下中文解释从https://blog.csdn.net/huima2017/article/details/104797135的文章内摘取

prog:程序名,默认为sys.argv[0]
usage:描述程序用途的字符串,默认值从添加到解析器的参数生成
description:在参数帮助文档之前显示的文本
epilog:在参数帮助文档之后显示的文本
parents:一个 ArgumentParser 对象的列表,它们的参数也应包含在内
formatter_class:用于自定义帮助文档输出格式的类
prefix_chars:可选参数的前缀字符集合,默认为'-'
fromfile_prefix_chars:当需要从文件中读取其他参数时,用于标识文件名的前缀字符集合
argument_default:参数的全局默认值
conflict_handler:解决冲突选项的策略(通常不必要)
add_help:为解析器添加一个 -h/--help 选项,默认为True
allow_abbrev:如果缩写是无歧义的,则允许缩写长选项,默认为True
'''

# argv里的添加参数选项:add_argument
'''
metaver:帮助信息中显示的参数名称
const:保存一个常量
default:默认值
type:类型,默认为str
choices:设定参数值的范围,如果choices里的类型不是str,请记得指定type
required:该选项是否必选,默认为True
dest:参数名
'''

# 这里参数有两种,可选参数和位置(必选)参数,运行时,默认会用'-'来辨认可选参数,其他剩下的即为位置参数,而位置参数为必传
parse.add_argument('name',type=str,help='名字')# 添加位置参数(必选)
parse.add_argument('age',type=int,help='年龄')# 添加位置参数(必选)
parse.add_argument('-s',dest='--sex',type=str,help='性别')# 添加可选参数

# print(parse.print_help())# 打印帮助文档

result = parse.parse_args()# 解析参数
print(result)# 这里也可用result.xx来限定输出什么

输入:

python test.py 小明 5 -s 男

输出结果:

usage: test.py [-h] [-s --SEX] name age

编写自命令行的文件

positional arguments:
  name        名字
  age         年龄

optional arguments:
  -h, --help  show this help message and exit
  -s --SEX    性别
None
Namespace(age=5, name='小明', **{'--sex': '男'})

关于命令行参数的简单示例:简单登录

import argparse

parse = argparse.ArgumentParser(prog='登录')# 创建一个解析器对象

parse.add_argument('-u',dest='user',type=str,help='用户名')# 添加可选参数
parse.add_argument('-p',dest='password',type=str,help='密码')# 添加可选参数

result = parse.parse_args()# 开始解析参数

if(result.user == 'root' and result.password == '123456'):# 判断用户名及密码
    print('登录成功')
    pass
else:
    print('用户名或密码错误')
    pass

1.查看帮助文档:

python login.py -h

输出结果:

usage: 登录 [-h] [-u USER] [-p PASSWORD]

optional arguments:
  -h, --help   show this help message and exit
  -u USER      用户名
  -p PASSWORD  密码

2.输入正确的用户名及密码:

python login.py -u root -p 123456

输出结果:

登录成功
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值