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

如何在Python脚本中获取终端宽度以生成对称的-help页面头部

Python 获取终端尺寸并生成自适应帮助页头部

要实现自适应终端宽度的对称帮助页头部,你可以用Python标准库中的工具获取终端尺寸,再动态计算等号数量。以下是具体实现方案:

一、获取终端尺寸的方法

Python 3.3+ 提供了两种可靠的标准库方法获取终端列数:

1. 使用 shutil.get_terminal_size()

这是最推荐的方式,兼容性好,会自动处理终端环境:

import shutil

# 获取终端列数和行数,我们只需要列数
cols, lines = shutil.get_terminal_size()

2. 使用 os.get_terminal_size()

属于更底层的实现,用法类似:

import os

# 直接获取列数
cols = os.get_terminal_size().columns

异常处理(必备)

如果脚本在非终端环境运行(比如被重定向到文件),上述方法会抛出异常,此时建议设置默认宽度(比如80列):

try:
    cols, _ = shutil.get_terminal_size()
except:
    cols = 80

二、生成对称帮助头部

根据终端列数,动态计算两侧等号的数量,确保标题居中对称:

import shutil

def generate_help_header(title="help page"):
    # 获取终端宽度,设置默认值
    try:
        cols, _ = shutil.get_terminal_size()
    except:
        cols = 80
    
    # 给标题前后加空格,和示例格式一致
    title_with_spaces = f" {title} "
    # 计算两侧等号数量,确保总长度适配终端
    eq_count = max(0, (cols - len(title_with_spaces)) // 2)
    
    # 拼接头部
    header = "=" * eq_count + title_with_spaces + "=" * eq_count
    # 防止极端情况(终端宽度小于标题长度)导致换行,截断到终端宽度
    if len(header) > cols:
        header = header[:cols]
    
    return header

# 测试调用
print(generate_help_header())

三、结合帮助选项使用

在处理 -h/--help 选项时,直接调用上述函数生成头部即可。比如用 argparse 实现:

import argparse
import shutil

def generate_help_header(title="help page"):
    try:
        cols, _ = shutil.get_terminal_size()
    except:
        cols = 80
    title_with_spaces = f" {title} "
    eq_count = max(0, (cols - len(title_with_spaces)) // 2)
    header = "=" * eq_count + title_with_spaces + "=" * eq_count
    if len(header) > cols:
        header = header[:cols]
    return header

def main():
    # 禁用argparse默认的help,自定义帮助输出
    parser = argparse.ArgumentParser(add_help=False)
    parser.add_argument("-h", "--help", action="store_true", help="显示帮助信息")
    args = parser.parse_args()

    if args.help:
        # 输出自适应头部
        print(generate_help_header())
        # 输出帮助内容
        print("\n可用选项:")
        print("  -h, --help    显示此帮助页面")
        # 其他帮助内容请在这里补充
        # 可选:输出底部分隔线
        print("\n" + "=" * len(generate_help_header()))
        return
    
    # 你的应用核心逻辑
    print("应用运行中...")

if __name__ == "__main__":
    main()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 01:45:26