Python
  • 01、基础篇
    • Python基础篇-001. Python简介
    • Python基础篇-002. Hello World
    • Python基础篇-003. 变量类型(一)
    • Python基础篇-004. 常量
    • Python基础篇-005. 运算符
    • Python基础篇-006. 条件语句
    • Python基础篇-007. 循环语句
    • Python基础篇-008. 变量类型(二)
    • Python基础篇-009. 函数(一)
    • Python基础篇-010. 函数(二)
    • Python基础篇-011. 变量作用域
    • Python基础篇-012. 自定义类(一)
    • Python基础篇-013. 自定义类(二)
    • Python基础篇-014. 模块
    • Python基础篇-015. 异常处理
  • 02、进阶篇
    • Python进阶篇-001. 文件IO
    • Python进阶篇-002. main.py
    • Python进阶篇-003. init.py
    • Python进阶篇-004. all
    • Python进阶篇-005. private
    • Python进阶篇-006. lambda表达式
    • Python进阶篇-007. 推导式
    • Python进阶篇-008. 迭代器
    • Python进阶篇-009. 生成器
    • Python进阶篇-010. 多线程
    • Python进阶篇-011. 数据处理基础函数(一)
    • Python进阶篇-012. 数据处理基础函数(二)
    • Python进阶篇-013. 包管理(一)
    • Python进阶篇-014. 包管理(二)
    • Python进阶篇-015. 包管理(三)
    • Python进阶篇-016. 包管理(四)
    • Python进阶篇-017. requirements.txt
    • Python进阶篇-018. venv
    • Python进阶篇-019. 头部注释
    • Python进阶篇-020. 优雅传参
    • Python进阶篇-021. 连接MySQL
  • 03、实践篇
    • Python实践篇-001. GitBook小工具(一)
    • Python实践篇-002. GitBook小工具(二)
Powered by GitBook
On this page
  • 一、创作声明
  • 二、优雅传参
  • 三、写在最后
  1. 02、进阶篇

Python进阶篇-020. 优雅传参

[toc]

一、创作声明

进阶篇是对基础篇的补充,这里面更多的是各种常用库、高级语法糖的教程,因此,进阶篇的内容会比较零碎。在创作过程中,同样会借助ChatGPT来辅助。

二、优雅传参

带着这个问题来看本文:Python如何优雅传参。比如python hdfs -ls /用来查询hdfs的根路径,python yarn -kill applicationid_xxx用来杀死指定的application。

在Python中,可以使用命令行参数解析库来优雅地传递参数。一个常用的库是argparse,它可以帮助我们定义和解析命令行参数。下面是一个示例:

import argparse

# 创建解析器对象
parser = argparse.ArgumentParser()

# 设置公共参数
parser.add_argument("-c", "--config", help="配置文件")

## 这里dest必须为subcommand
subparsers = parser.add_subparsers(dest="subcommand")

# 创建hdfs子命令解析器
hdfs_parser = subparsers.add_parser("hdfs")
hdfs_parser.add_argument("-ls", metavar="path", help="查询HDFS路径")

# 创建yarn子命令解析器
yarn_parser = subparsers.add_parser("yarn")
yarn_parser.add_argument("-kill", metavar="appid", help="杀死Yarn应用")

# 解析命令行参数
args = parser.parse_args()

# 根据子命令执行相应的操作
if args.subcommand == "hdfs":
    if args.ls:
        print("查询HDFS路径:", args.ls)
    else:
        hdfs_parser.print_help()
elif args.subcommand == "yarn":
    if args.kill:
        print("杀死Yarn应用:", args.kill)
    else:
        yarn_parser.print_help()
else:
    parser.print_help()

运行示例代码时,可以使用以下命令行参数:

python script.py hdfs -ls /

python script.py yarn -kill applicationid_xxx

其中,hdfs和yarn为子命令,-ls和-kill为选项参数。这样可以较为优雅地传递参数,并根据子命令执行相应的操作。

三、写在最后

更多技术分享,点击传送门:https://github.com/maxiaolu66/profile

PreviousPython进阶篇-019. 头部注释NextPython进阶篇-021. 连接MySQL

Last updated 1 year ago