推荐使用argparse解析命令行参数,它功能完整且用户友好,支持位置与可选参数、子命令、类型检查及自动生成帮助;getopt适用于简单场景或旧代码兼容;optparse已弃用;第三方库click采用装饰器风格,适合复杂CLI应用;fire由Google开发,可快速将函数或类转为命令行接口,适合原型开发。日常推荐argparse,大型项目用click,快速调试选fire。
Python 提供了多个用于解析命令行参数的模块,各有特点,适用于不同场景。以下是常用的几种:
示例:
import argparse
parser = argparse.ArgumentParser(description='处理文件')
parser.add_argument('--input', '-i', type=str, required=True, help='输入文件路径')
parser.add_argument('--verbose', '-v', action='store_true', help='启用详细输出')
args = parser.parse_args()
print(args.input)
示例:
import getopt, sys
opts, args = getopt.getopt(sys.argv[1:], 'i:v', ['input=', 'verbose'])
for opt, val in opts:
if opt in ('-i', '--input'):
input_file = val
示例:
import click
@click.command()
@click.option('--name', prompt='你的名字')
def hello(name):
click.echo(f'Hello {name}!')
if __name__ == '__main__':
hello()
示例:
import fire基本上就这些。日常开发中,argparse 是标准选择,click 更适合大型 CLI 应用,fire 适合快速原型。根据需求选合适的就行。
def greet(name, times=3):
for _ in range(times):
print(f'Hello {name}')
if __name__ == '__main__':
fire.Fire(greet)