Python命令行解析器argparse详解
1. 简介
在开发Python命令行工具时,可以使用标准库中的argparse模块来解析命令行参数。argparse模块可以帮您更容易地处理复杂的命令行参数,例如选项(--verbose)、参数(file.txt)和子命令(checkout、commit等)。
2. 安装
argparse是Python标准库的一部分,您无需安装即可使用。
3. 使用方法
3.1 基本用法
要使用argparse,首先需要创建一个ArgumentParser对象。接着你需要为程序定义期望的命令行参数,这些参数可以是选项、参数或子命令。例如:
import argparse
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers (default: find the max)')
args = parser.parse_args()
print(args.accumulate(args.integers))
在这个例子中,我们定义了一个名为integers的位置参数,它接受一个以上的整数。我们还定义了一个--sum选项,可选择对这些整数执行求和而不是计算最大值。我们可以运行这个脚本的方式如下:
$ python3 prog.py 1 2 3 4
4
$ python3 prog.py 1 2 3 4 --sum
10
3.2 指定参数类型
argparse模块可以自动验证和转换命令行参数的类型。通过指定type参数,你可以为参数指定一个特定的类型。例如:
parser.add_argument('--foo', type=int, help='foo help')
这将把--foo参数转换为整数。
有关更多信息,请参见官方文档。
4. 示例
4.1 文件拷贝工具
下面是一个简单的文件拷贝工具,它接受两个参数:第一个是源文件的名称,第二个是目标文件的名称。
import argparse
import shutil
parser = argparse.ArgumentParser(description='Copy a file')
parser.add_argument('src', metavar='source', type=str, help='source file')
parser.add_argument('dst', metavar='destination', type=str, help='destination file')
args = parser.parse_args()
shutil.copy(args.src, args.dst)
print('File', args.src, 'copied to', args.dst)
我们可以像这样运行这个工具:
$ python3 file_copy.py source.txt destination.txt
File source.txt copied to destination.txt
4.2 统计文件中的单词数
下面是一个统计文件中单词数的示例。它接受一个参数,即要读取的文件名。
import argparse
parser = argparse.ArgumentParser(description='Count the number of words in a file')
parser.add_argument('filename', metavar='filename', type=str, help='file to count words in')
args = parser.parse_args()
with open(args.filename, 'r') as f:
data = f.read()
words = data.split()
print('File', args.filename, 'contains', len(words), 'words')
我们可以像这样运行这个程序:
$ python3 word_count.py sample.txt
File sample.txt contains 25 words
5. 总结
argparse模块可帮助你更容易地处理复杂的命令行参数,并在Python命令行工具的开发中提供了有用的功能。在使用argparse时,请确保先了解其基础知识,以充分发挥其功能。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python命令行解析器argparse详解 - Python技术站