[Python进阶] 解析命令行参数

2.17 解析命令行参数

2.17.1 通过sys模块解析

笔者在Python基础篇第一章中讲了Python运行的方式,一共有3种:
1、交互模式
2、命令行脚本模式
3、集成开发环境模式
其中第2种运行方式:命令行脚本模式是可以向脚本传递参数的。我们可以通过模块sys来获取到传递给脚本的参数。
如果通过集成开发环境模式直接运行或者通过命令行脚本模式运行而没有传递参数时,sys.argv获取到的就是脚本的路径:
集成开发环境模式直接运行

import sys

from icecream import ic
ic(sys.argv)

14:59:10|> sys.argv: [‘E:/BaiduNetdiskWorkspace/FrbPythonFiles/t1.py’]

命令行脚本模式运行而没有传递参数

E:\BaiduNetdiskWorkspace\FrbPythonFiles>Python t1.py
15:04:05|> sys.argv: [‘t1.py’]

命令行脚本模式运行并传递参数

E:\BaiduNetdiskWorkspace\FrbPythonFiles>Python t1.py arg1 arg2 arg3
15:06:53|> sys.argv: [‘t1.py’, ‘arg1’, ‘arg2’, ‘arg3’]

此时,我们可以在脚本中通过sys.argv收集到的参数,然后进行处理。例如:

import sys
from icecream import ic

argvs = sys.argv
if len(argvs) == 1:
    ic('请输入参数')
elif len(argvs) == 2:
    ic(f'参数的个数正确,输入的参数是{argvs[1]}')
else:
    ic('参数的数量太多啦!')

直接运行时:

15:10:54|> ‘请输入参数’

命令行带脚本运行时:

E:\BaiduNetdiskWorkspace\FrbPythonFiles>Python t1.py arg1
15:12:10|> f’参数的个数正确,输入的参数是{argvs[1]}': ‘参数的个数正确,输入的参数是arg1’

通过这种方式可以大大加强脚本的实用性,针对不同的参数完成不同的功能,让一个脚本具备更多的功能。

2.17.2 通过argparse模块来解析

我们还可以使用标准库中的argparse模块来解析命令行参数。argparse模块可以帮助我们定义和解析命令行参数,并生成帮助信息。
以下是一个简单的例子,演示如何使用argparse模块解析命令行参数:

import argparse

# 创建一个ArgumentParser对象
parser = argparse.ArgumentParser(description='命令行参数解析器')
# 添加命令行参数
parser.add_argument('--input', type=str, help='输入文件路径')
parser.add_argument('--output', type=str, help='输出文件路径')
parser.add_argument('--verbose', action='store_true', help='是否输出详细信息')
# 解析命令行参数
args = parser.parse_args()
# 使用命令行参数
if args.verbose:
    print('正在处理文件...')
if args.input:
    print(f'输入文件路径为:{args.input}')
if args.output:
print(f'输出文件路径为:{args.output}')

在上面的例子中,我们首先创建了一个ArgumentParser对象,并使用add_argument()方法添加了三个命令行参数:–input、–output和–verbose。其中,–input和–output是带有参数值的选项,而–verbose是一个布尔选项,不需要参数值。
其实还有2个命令行参数是自动会添加进去,即:-h和–help,用来显示命令行参数帮助信息,同时,我们也为命令行参数添加了帮助说明,这样,在遇到不清楚参数的情况下,我们就可以通过-h参数查看帮助:

E:\BaiduNetdiskWorkspace\FrbPythonFiles>Python t1.py -h
usage: t1.py [-h] [–input INPUT] [–output OUTPUT] [–verbose]
命令行参数解析器
options:
-h, --help show this help message and exit
–input INPUT 输入文件路径
–output OUTPUT 输出文件路径
–verbose 是否输出详细信息

然后,我们调用parse_args()方法解析命令行参数,并将解析结果保存在args变量中。最后,我们根据命令行参数的值,执行相应的操作。
例如,如果命令行中输入了以下命令:

Python myscript.py --input input.txt --output output.txt --verbose
那么,程序将输出以下内容:
正在处理文件…
输入文件路径为:input.txt
输出文件路径为:output.txt

如果只输入以下命令:

Python myscript.py --input input.txt
那么,程序将输出以下内容:
输入文件路径为:input.txt

如果需要获取更多关于argparse模块的信息,可以查看Python官方文档中的相关内容。

  • 25
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

0思必得0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值