本文目录导读:

在Python中解析命令行参数有多种方法,以下是几种常用方式:
sys.argv(最简单的方式)
import sys
# 获取所有命令行参数
print(f"脚本名称: {sys.argv[0]}")
print(f"所有参数: {sys.argv[1:]}")
# 示例用法
if len(sys.argv) > 1:
for i, arg in enumerate(sys.argv[1:], 1):
print(f"参数{i}: {arg}")
运行示例:
python script.py arg1 arg2 arg3 # 输出: 参数1: arg1, 参数2: arg2, 参数3: arg3
argparse(推荐,功能强大)
import argparse
def main():
# 创建解析器
parser = argparse.ArgumentParser(description='描述你的程序功能')
# 添加参数
parser.add_argument('name', help='必填参数 - 你的名字') # 位置参数
parser.add_argument('-a', '--age', type=int, help='可选参数 - 年龄', default=18)
parser.add_argument('-v', '--verbose', action='store_true', help='详细模式')
parser.add_argument('-c', '--color', choices=['red', 'blue', 'green'], help='颜色选择')
# 解析参数
args = parser.parse_args()
# 使用参数
print(f"名字: {args.name}")
print(f"年龄: {args.age}")
if args.verbose:
print("详细模式已开启")
if args.color:
print(f"选择的颜色: {args.color}")
if __name__ == "__main__":
main()
运行示例:
# 基本使用 python script.py 小明 # 带可选参数 python script.py 小明 --age 25 --verbose # 使用短选项 python script.py 小明 -a 25 -v # 查看帮助 python script.py -h
argparse 进阶用法
import argparse
def main():
parser = argparse.ArgumentParser(description='命令行参数解析示例')
# 不同类型的参数
parser.add_argument('input', help='输入文件')
parser.add_argument('-o', '--output', help='输出文件')
parser.add_argument('-n', '--number', type=int, default=10, help='数量')
parser.add_argument('--flag', action='store_true', help='标志位')
# 列表参数
parser.add_argument('--files', nargs='+', help='多个文件')
# 必需参数
parser.add_argument('--required-arg', required=True, help='必填参数')
args = parser.parse_args()
print(f"输入文件: {args.input}")
print(f"数量: {args.number}")
print(f"标志位: {args.flag}")
if args.files:
print(f"文件列表: {args.files}")
if __name__ == "__main__":
main()
getopt(较旧的方式)
import getopt
import sys
def main():
try:
# 短选项: h 和 v 无值,n: 和 o: 需要值
# 长选项: help 和 verbose 无值,name= 和 output= 需要值
opts, args = getopt.getopt(sys.argv[1:], "hvn:o:",
["help", "verbose", "name=", "output="])
except getopt.GetoptError as err:
print(f"错误: {err}")
sys.exit(1)
name = None
output = None
verbose = False
for opt, arg in opts:
if opt in ("-h", "--help"):
print("用法: script.py [-h] [-v] [-n NAME] [-o OUTPUT]")
sys.exit()
elif opt in ("-v", "--verbose"):
verbose = True
elif opt in ("-n", "--name"):
name = arg
elif opt in ("-o", "--output"):
output = arg
print(f"名字: {name}")
print(f"输出: {output}")
print(f"详细模式: {verbose}")
if __name__ == "__main__":
main()
Click 库(第三方,非常易用)
首先安装:
pip install click
import click
@click.command()
@click.argument('name') # 位置参数
@click.option('--age', default=18, help='年龄')
@click.option('--verbose', is_flag=True, help='详细模式')
@click.option('--color', type=click.Choice(['red', 'blue', 'green']))
def main(name, age, verbose, color):
"""这是一个示例程序"""
click.echo(f"名字: {name}")
click.echo(f"年龄: {age}")
if verbose:
click.echo("详细模式已开启")
if color:
click.echo(f"颜色: {color}")
if __name__ == "__main__":
main()
推荐使用建议
- 简单脚本:使用
sys.argv - 中等复杂度:使用
argparse(标准库,功能完整) - 复杂CLI应用:使用
Click或Fire库 - 维护旧代码:了解
getopt
argparse 是最推荐的方式,因为它:
- 是Python标准库,无需安装
- 自动生成帮助信息
- 支持类型检查和默认值
- 错误处理完善
- 文档丰富
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播