gpt4 book ai didi

python - 你如何使用 argparse 获取程序的名称?

转载 作者:太空狗 更新时间:2023-10-29 17:24:28 25 4
gpt4 key购买 nike

我正在使用 argparse 来解析命令行参数。在浏览 argparse 的文档时我只能看到使用不同程序名称的规定。

我希望能够使用默认程序名称而不必导入 sys。据我所知,argparse 中没有任何内容会返回程序名称。

import argparse

parser = argparse.ArgumentParser()
args = parser.parse_args()

print(dir(args))

这是输出:

['__class__', '__contains__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__' , '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', ' __sizeof__', '__str__', '__subclasshook__', '__weakref__', '_get_args', '_get_kwargs']

有没有其他方法可以在不导入 sys 模块的情况下检索程序名称?

最佳答案

ArgumentParser 实例有一个 prog 属性,我认为这是你想要的。

import argparse

parser = argparse.ArgumentParser()
print('parser.prog: {}'.format(parser.prog))

我通过阅读 Lib/argparse.py 中的模块源代码发现了这一点—具体查看 类 ArgumentParser definition .由于该属性的名称不以下划线字符开头,因此我认为它是公开的。

更新

我看到,至少现在,ArgumentParser 实例的 prog 属性(或者自问这个问题以来一直是)记录在 Python 2's documentation 中和 Python 3's documentation .

所以,是的,它绝对是公开的,并且在两个版本中,如果在创建 ArgumentParser 时未将其作为关键字参数提供,则默认为 prog = _os.path.basename (_sys.argv[0])(其中 _os_sys 是私有(private)的 argparse 模块属性,对应于它们的非下划线- 前缀的副本。请注意,由于使用了 os.basename(),这将只是脚本的文件名,而不是可能的完整路径(它是操作系统依赖)已经在 sys.argv[0] 中。

关于python - 你如何使用 argparse 获取程序的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25297792/

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