用argparse随心所欲写python帮助信息

当我们在命令行使用一些软件的时候,往往通过-h/–help两个参数查看软件指定的输入输出是什么,就像下面图片这样:
blast
最近自己在琢磨用python写一个分析流程,也想要这样的效果,找了找发现python自带的argparse包便能实现这样的效果。

模板

我们创建一个名为test.py的文件,在里面进行测试。

# 导入库
import argparse
# 获取实例
parser = argparse.ArgumentParser()
# 解析命令行参数
args = parser.parse_args()

运行之后可得到如下结果:
在这里插入图片描述
结构大致就是这样,然后我们可以逐渐添加程序描述和参数。

描述

# 导入库
import argparse
# 获取实例
parser = argparse.ArgumentParser(
    description="""
    ##################################
    # Cell Free RNA Analysis Pipeline#
    ##################################
    """
)
# 解析命令行参数
args = parser.parse_args()

运行之后得到的结果如下:
在这里插入图片描述
可以看到这个描述和我们期望输出的样式不一样,这个问题可以通过添加参数formatter_class=argparse.RawTextHelpFormatter实现。
在这里插入图片描述
能够实现类似功能的还有formatter_class=argparse.RawDescriptionHelpFormatter参数。
二者的区别在于:

  1. argparse.RawTextHelpFormatter 保留原始文本格式,包括换行符,适用于需要保留每行格式的情况,比如多行文本或代码示例。
  2. argparse.RawDescriptionHelpFormatter 保留段落格式,但移除每行的额外缩进,适用于简单的段落式帮助信息,不需要保留每行的格式。

参数

现在我们可以进一步添加参数

parser = argparse.ArgumentParser(
    formatter_class=argparse.RawDescriptionHelpFormatter,  # 指定帮助信息输出格式
    description="""
    ##################################
    # Cell Free RNA Analysis Pipeline#
    ##################################
    """,
)
parser.add_argument("-v", "--version", action="version", version="%(prog)s 1.0")
parser.add_argument("-j", "--json", type=str, help="流程配置文件", required=True)
parser.add_argument("-i", "--in_file", type=str, help="输入文件", required=True)
parser.add_argument("-o", "--out_path", type=str, help="输出路径", required=True)
parser.add_argument("-P", "--project", type=str, help="项目编号", default="project_number")
# 解析命令行参数
args = parser.parse_args()

运行python test.py -h,得到如下结果:
在这里插入图片描述
运行python test.py -v便可得到版本号:
在这里插入图片描述

补充描述

我们还可以通过参数epilogoptional arguments:后面输出文本,对程序的描述进行补充;

import argparse

# 获取实例
parser = argparse.ArgumentParser(
    formatter_class=argparse.RawDescriptionHelpFormatter,  # 指定帮助信息输出格式
    description="""
    ##################################
    # Cell Free RNA Analysis Pipeline#
    ##################################
    """,
    epilog="V wo wu shi, I want to eat crazy Thursday KFC",  # help时显示的结尾文字
)
parser.add_argument("-v", "--version", action="version", version="%(prog)s 1.0")
parser.add_argument("-j", "--json", type=str, help="流程配置文件", required=True)
parser.add_argument("-i", "--in_file", type=str, help="输入文件", required=True)
parser.add_argument("-o", "--out_path", type=str, help="输出路径", required=True)
parser.add_argument("-P", "--project", type=str, help="项目编号", default="project_number")
# 解析命令行参数
args = parser.parse_args()

运行python test.py -h结果如下:
在这里插入图片描述

解析参数

argparse包不只是能够输出这么多信息,同时还能够解析输入的参数。

import argparse
# 获取实例
parser = argparse.ArgumentParser(
    formatter_class=argparse.RawDescriptionHelpFormatter,  # 指定帮助信息输出格式
    description="""
    ##################################
    # Cell Free RNA Analysis Pipeline#
    ##################################
    """,
    epilog="V wo wu shi, I want to eat crazy Thursday KFC",  # help时显示的结尾文字
)
parser.add_argument("-v", "--version", action="version", version="%(prog)s 1.0")
parser.add_argument("-j", "--json", type=str, help="流程配置文件", required=True)
parser.add_argument("-i", "--in_file", type=str, help="输入文件", required=True)
parser.add_argument("-o", "--out_path", type=str, help="输出路径", required=True)
parser.add_argument("-P", "--project", type=str, help="项目编号", default="project_number")
# 解析命令行参数
args = parser.parse_args()


json_file = args.json
input_file = args.in_file
output_path = args.out_path
project = args.project

print(json_file)
print(input_file)
print(output_path)
print(project)

运行结果:
在这里插入图片描述

因为目前的参数已经够用(甚至还能整活😀),这个包其他的参数还没有再去尝试,更多信息大家可以参考官方帮助文档

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

发誓要做读书人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值