argparse 模块 - 如何在运行时更改帮助格式?

发布于 2024-11-19 06:08:39 字数 390 浏览 2 评论 0原文

可以说,我有一个解析器:

self.__parser = argparse.ArgumentParser(
                            prog = '<...>',
                            fromfile_prefix_chars='@')

初始化后,我想在运行时将 argparser 中的 prog 变量更改为其他内容,比如:“aaa”。

代码:

self.__parser.prog = 'aaa'

不起作用,因为 argparser 将此 prog 缓存在 ts 格式化程序内的某个位置。 有人知道是否可以以简单的方式更改此属性?

Lets say, I've got a parser:

self.__parser = argparse.ArgumentParser(
                            prog = '<...>',
                            fromfile_prefix_chars='@')

After it is initialized I want in runtime to change the prog variable in argparser to something else, lets say: 'aaa'.

Code:

self.__parser.prog = 'aaa'

does NOT work, because argparser caches this prog somwhere inside ts formatters.
Does somebody knows if is it possible to change this property in simple way?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一个人的旅程 2024-11-26 06:08:39

我怀疑问题出在代码中的其他地方,因为下面的代码允许更改 prog 属性,这通过调用 print_help 来证明:

import argparse
import sys

class MyParser():
    def __init__(self, nm=sys.argv[0]):
        self.__parser = argparse.ArgumentParser(prog=nm, fromfile_prefix_chars='@')
    def change_prog_name(self, nm):
        self.__parser.prog = nm
    def print_help(self):
        self.__parser.print_help()

my_parser = MyParser()
my_parser.print_help()
print 'after prog change:'
my_parser.change_prog_name('aaa')
my_parser.print_help()

输出:

用法:argparse_test.py [-h]

可选参数:
    -h, --help 显示此帮助消息并退出

程序更改后:
用法:aaa [-h]

可选参数:
    -h, --help 显示此帮助消息并退出

It is my suspicion that the problem is somewhere else in your code, as the code below is allowed to change the prog attribute, demonstrated by the calls to print_help:

import argparse
import sys

class MyParser():
    def __init__(self, nm=sys.argv[0]):
        self.__parser = argparse.ArgumentParser(prog=nm, fromfile_prefix_chars='@')
    def change_prog_name(self, nm):
        self.__parser.prog = nm
    def print_help(self):
        self.__parser.print_help()

my_parser = MyParser()
my_parser.print_help()
print 'after prog change:'
my_parser.change_prog_name('aaa')
my_parser.print_help()

Output:

usage: argparse_test.py [-h]

optional arguments:
   -h, --help show this help message and exit

after prog change:
usage: aaa [-h]

optional arguments:
   -h, --help show this help message and exit

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文