如何在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
相关产品推荐
相关产品推荐

