Python解析命令行读取参数–argparse模块使用方法

  • Post category:Python

Python解析命令行读取参数–argparse模块使用方法

在Python中可以通过命令行读取参数来控制程序的行为,这可以方便我们实现一些自动化操作、脚本、小工具等等。Python标准库中提供了argparse模块,可以方便的解析命令行中的参数。

argparse模块基本使用

  1. 引入argparse模块
import argparse
  1. 定义解析器对象
parser = argparse.ArgumentParser(description='描述信息')

在这里我们定义了一个解析器对象,并且可以为它添加一些描述信息,这些信息将在使用-h参数时显示。

  1. 定义参数
parser.add_argument('-o', '--output', help='输出文件名')

在这里,我们定义了一个参数-o或–output,表示输出文件名,默认值为None,如果要使用该参数,可以通过-o或–output指定输出文件名。同时,我们还定义了一个help信息,当用户通过-h参数查看帮助信息时,这里定义的参数信息也会显示出来。

  1. 解析参数
args = parser.parse_args()

在这里,我们使用parse_args()方法解析命令行中的参数,并返回一个Namespace对象。

  1. 使用参数
if args.output:
    print('输出文件名:', args.output)

在这里,我们可以通过命名空间对象访问解析出来的参数值,这里的意思是如果用户指定了-o或–output参数时,则输出文件名,否则不输出。

argparse模块示例

下面我们通过两个示例了解argparse模块的使用。

示例一:命令行计算器

本示例实现一个简单的命令行计算器,接收用户输入的两个数和操作符,然后输出计算结果。

import argparse

parser = argparse.ArgumentParser(description='命令行计算器')
parser.add_argument('num1', help='第一个数字')
parser.add_argument('num2', help='第二个数字')
parser.add_argument('operator', help='操作符')

args = parser.parse_args()

num1 = float(args.num1)
num2 = float(args.num2)
operator = args.operator

if operator == '+':
    print(num1 + num2)
elif operator == '-':
    print(num1 - num2)
elif operator == '*':
    print(num1 * num2)
else:
    if num2 == 0:
        print('除数不能为0')
    else:
        print(num1 / num2)

在这个示例中,我们定义了三个参数分别表示第一个数,第二个数以及操作符,最后根据不同的操作符输出计算结果。

示例二:文件拷贝

本示例实现一个简单的文件拷贝工具,接收源文件路径和目标文件路径参数,然后将源文件拷贝到目标文件中。

import argparse
import shutil

parser = argparse.ArgumentParser(description='文件拷贝工具')
parser.add_argument('source', help='源文件路径')
parser.add_argument('target', help='目标文件路径')

args = parser.parse_args()

shutil.copy(args.source, args.target)
print('文件拷贝成功!')

在这个示例中,我们定义了两个参数分别表示源文件和目标文件的路径,然后使用shutil库中的copy方法将源文件拷贝到目标文件中。