You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按字母顺序打印argparse解析后的命令行参数?

按字母顺序打印argparse参数的方法

这里有两种简洁规范的方式实现需求:

方法1:转换为有序结构后格式化输出

把args对象转为字典,对键值对按字母排序后,手动拼接成类似Namespace的格式:

import argparse
parser = argparse.ArgumentParser('Some program', add_help=False)
parser.add_argument('--bb', type=str)
parser.add_argument('--aa', type=str)
args = parser.parse_args()

# 转换为排序后的键值对列表
sorted_args = sorted(vars(args).items())
# 格式化为Namespace风格的字符串
print(f"Namespace({', '.join([f'{k}={repr(v)}' for k, v in sorted_args])})")

执行后会输出Namespace(aa=..., bb=...),完全符合预期。

方法2:自定义Namespace类修改默认输出逻辑

通过自定义argparse.Namespace的子类,重写__repr__方法,让它默认按字母顺序打印参数:

import argparse

class SortedNamespace(argparse.Namespace):
    def __repr__(self):
        sorted_items = sorted(vars(self).items())
        items_str = ', '.join([f'{k}={repr(v)}' for k, v in sorted_items])
        return f'SortedNamespace({items_str})'

parser = argparse.ArgumentParser('Some program', add_help=False)
parser.add_argument('--bb', type=str)
parser.add_argument('--aa', type=str)
# 指定parse_args返回自定义的Namespace实例
args = parser.parse_args(namespace=SortedNamespace())
print(args)

这种方式更灵活,后续所有print(args)都会自动按字母顺序输出参数。

内容的提问来源于stack exchange,提问作者f10w

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 15:31:59