You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于argparse命令行参数执行关联的特定函数?

使用argparse根据命令行参数触发对应函数

方法1:检查参数是否被设置(适合单参数触发场景)

这种方法适配你给出的示例场景:通过-s参数触发特定函数。核心逻辑是解析命令行参数后,判断哪个参数有传入值,再调用对应的函数。

代码示例:

import argparse

# 定义功能函数
def scan_website(url):
    print(f"正在扫描网站: {url}")
    # 这里编写你的扫描业务逻辑

def other_function(param):
    print(f"执行其他功能,参数: {param}")

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="根据命令行参数执行对应功能")
    # 添加参数,用dest指定属性名,方便后续判断
    parser.add_argument("-s", "--scan", dest="scan_url", help="扫描指定网站")
    parser.add_argument("-o", "--other", dest="other_param", help="执行其他功能")
    
    args = parser.parse_args()
    
    # 根据传入的参数调用对应函数
    if args.scan_url:
        scan_website(args.scan_url)
    elif args.other_param:
        other_function(args.other_param)
    else:
        # 未传入有效参数时打印帮助信息
        parser.print_help()

使用示例:

  • 执行py test.py -s google.com,会触发scan_website函数,输出正在扫描网站: google.com
  • 执行py test.py -o test_param,会触发other_function函数

方法2:使用子命令(subparsers,适合多命令场景)

如果你的工具需要多个独立命令(类似git clone、git push的结构),用子命令会更规范,逻辑扩展性更强。

代码示例:

import argparse

def scan_website(args):
    print(f"正在扫描网站: {args.url}")
    # 扫描业务逻辑

def other_function(args):
    print(f"执行其他功能,参数: {args.param}")

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="多命令工具示例")
    # 创建子命令解析器
    subparsers = parser.add_subparsers(dest="command", required=True, help="可用命令")
    
    # 添加scan子命令并绑定对应函数
    scan_parser = subparsers.add_parser("scan", help="扫描网站")
    scan_parser.add_argument("url", help="要扫描的网站URL")
    scan_parser.set_defaults(func=scan_website)
    
    # 添加other子命令并绑定对应函数
    other_parser = subparsers.add_parser("other", help="执行其他功能")
    other_parser.add_argument("param", help="功能参数")
    other_parser.set_defaults(func=other_function)
    
    args = parser.parse_args()
    # 调用绑定的函数
    args.func(args)

使用示例:

  • 执行py test.py scan google.com,触发scan_website函数
  • 执行py test.py other test_param,触发other_function函数

两种方法对比

  • 方法1适合简单的单参数触发场景,命令行输入更简短
  • 方法2适合复杂多命令场景,结构清晰,用户可通过--help直观查看所有可用命令

内容的提问来源于stack exchange,提问作者Mutlithrd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 00:12:53