Python解析命令行读取参数–argparse模块使用方法
在Python中可以通过命令行读取参数来控制程序的行为,这可以方便我们实现一些自动化操作、脚本、小工具等等。Python标准库中提供了argparse模块,可以方便的解析命令行中的参数。
argparse模块基本使用
- 引入argparse模块
import argparse
- 定义解析器对象
parser = argparse.ArgumentParser(description='描述信息')
在这里我们定义了一个解析器对象,并且可以为它添加一些描述信息,这些信息将在使用-h参数时显示。
- 定义参数
parser.add_argument('-o', '--output', help='输出文件名')
在这里,我们定义了一个参数-o或–output,表示输出文件名,默认值为None,如果要使用该参数,可以通过-o或–output指定输出文件名。同时,我们还定义了一个help信息,当用户通过-h参数查看帮助信息时,这里定义的参数信息也会显示出来。
- 解析参数
args = parser.parse_args()
在这里,我们使用parse_args()方法解析命令行中的参数,并返回一个Namespace对象。
- 使用参数
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方法将源文件拷贝到目标文件中。