gpt4 book ai didi

python - 如何在 Python 脚本中向用户显示所需的参数?

转载 作者:太空宇宙 更新时间:2023-11-03 15:49:23 24 4
gpt4 key购买 nike

我有一个从命令行运行的 Python 脚本。该脚本使用 sys.argv,需要以下六 (6) 个参数:

argument 1:  the script name (e.g. 'TimeSeries.py')
argument 2: a configuration file (e.g. 'Customer1.cfg')
argument 3: whether the resulting data is daily granular or hourly granular (e.g. -d or -h)
argument 4: which data to retrieve (e.g. -all or -limited)
argument 5: the number of days in the time series (e.g. '30')
argument 6: the 'as of' date

我每天多次运行此脚本,因此记住了参数的顺序。

但是,有些人可能很少运行脚本并且不知道所需的参数(和/或顺序)。

有没有办法让他们查询参数列表(以及每个参数的示例)?也许是文档字符串?

谢谢!

最佳答案

有多个选项:

  • 使用Click python 库并使用它重新格式化脚本。这会自动创建一个
    您可以使用的 --help 函数。我个人没有用过这个。

  • 使用argparse来自标准库。例如:

import argparse


def get_parser():
parser = argparse.ArgumentParser(description='Description of your script')
parser.add_argument('name', help='The script name (e.g. "TimeSeries.py")',
metavar="NAME", type=str)
# other arguments here ...
return parser

if __name__ == '__main__':
parser = get_parser()
args = parser.parse_args()

这将生成一个 -h 选项,与每个参数的帮助文本一起使用。可以与我最后的建议结合起来:

  • 文档字符串添加到文件顶部并附有说明。只要没有给出参数,就打印出__doc__。再次使用 argparse 的示例:
"""
argument 1: the script name (e.g. 'TimeSeries.py')
argument 2: a configuration file (e.g. 'Customer1.cfg')
argument 3: whether the resulting data is daily granular or hourly granular (e.g. -d or -h)
argument 4: which data to retrieve (e.g. -all or -limited)
argument 5: the number of days in the time series (e.g. '30')
argument 6: the 'as of' date
"""
import argparse

... # rest of script

def get_parser():
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument('name', help='The script name (e.g. "TimeSeries.py")',
metavar="NAME", type=str)
# other arguments here ...
return parser

if __name__ == '__main__':
parser = get_parser()
args = parser.parse_args()

现在使用 -h 选项调用脚本,将打印出顶部的文档字符串以及其余参数帮助文本。这当然也可以通过简单的 if 来实现:

if not args:  # somewhere in your own code
print(__doc__)
# exit code(?)

关于python - 如何在 Python 脚本中向用户显示所需的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41445440/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com