Python 命令行参数

直接处理

import sys

# 检查参数数量
if len(sys.argv) < 2:
    print("Usage: python script.py arg1 [arg2 ...]")
    sys.exit(1)

# 第一个参数是脚本自身名称
script_name = sys.argv[0]

# 其他的参数可以按需使用
first_argument = sys.argv[1]

# 打印所有参数
print("Script name:", script_name)
print("First argument:", first_argument)
for i, arg in enumerate(sys.argv[1:], start=1):
    print(f"Argument {i}:", arg)

argparse

设置参数

import argparse

# 创建 ArgumentParser 对象,这是处理命令行参数解析的主体:
parser = argparse.ArgumentParser(description='A description of your program.')

# 使用 add_argument 方法来定义你的程序接受的命令行选项和参数:

# 位置参数
parser.add_argument('input', help='input file')
# 可选参数
parser.add_argument('--output', '-o', help='output file')
# 开关参数
parser.add_argument('--verbose', '-v', action='store_true', help='increase output verbosity')
# 需要 int 值的参数
parser.add_argument('--retries', '-r', type=int, default=3, help='number of retries on error')
# 需要列表的参数
parser.add_argument('--servers', '-s', nargs='+', help='list of servers')
# 有限选项参数
parser.add_argument('--mode', choices=['auto', 'manual'], help='run mode')
  • input 是一个位置参数(必须提供,没有前导的 ---)。
  • --output 是一个可选参数,并且 -o 是它的缩写形式。
  • --verbose 是一个开关参数,如果提供了这个选项,相应的变量(这里假设是 args.verbose)将被设为 True
  • --retries 接受一个整数值,并有一个默认值 3
  • --servers 接受一个或多个值,这些值将被收集到一个列表中。
  • --mode 参数允许用户从限定的选项中 automanual 中选择一个。

参见:argparse.ArgumentParser.add_argument

解析参数

# 使用 ArgumentParser 对象解析命令行参数
args = parser.parse_args()

# 你可以使用解析结果中的属性来访问每个选项的值:

# 打印位置参数 input
print(args.input)

# 打印可选参数 output
if args.output:
    print(args.output)
# 打印开关参数 verbose
if args.verbose:
    print('Verbosity turned on.')
# 打印 int 参数 retries
if args.retries:
    print(f'Retrying {args.retries} times.')
# 打印列表参数 servers
if args.servers:
    print('Servers:', args.servers)
# 打印选项参数 mode
if args.mode:
    print(f'Running in {args.mode} mode.')
posted @ 2025-02-08 02:14  Undefined443  阅读(34)  评论(0)    收藏  举报