如何使用Python在外壳中右对齐段落?

问题描述

| 我正在使用一个交互式外壳,用户在其中输入一些文本,并以类似于对话的方式获取文本。在android和iphone上的最新SMS UI上,您可以看到您编写的文本的左侧对齐文本,以及您收到的文本的右侧对齐文本。 这是我想要实现的效果,但是在Linux shell中(没有精美的图形,只有输入和输出流)。 我很了解
format()
rjust()
方法,但是它们需要知道您想要用其填充值的字符数,而且我也不知道当前shell的宽度。 我不受我可以安装或使用的库的限制,我主要针对Linux平台,以为跨平台的东西总是很好。     

解决方法

使用诅咒。 使用
window.getmaxyx()
获取端子尺寸。 另一种选择:
import os
rows,cols = os.popen(\'stty size\',\'r\').read().split()
    ,如前所述,使用诅咒。对于简单的情况,如果您不想使用curses,则可以使用
COLUMNS
环境变量(更多信息请参见此处)。     ,如果需要正确调整多行输出,请结合以下各项: 获取窗口宽度:如何在Python中获取Linux控制台窗口宽度 textwrap.wrap 使用正义 就像是:
import textwrap

screen_width = <width of screen>
txt = <text to right justify>

# Right-justifies a single line
f = lambda x : x.rjust(screen_width)

# wrap returns a list of strings of max length \'screen_width\'
# \'map\' then applies \'f\' to each to right-justify them.
# \'\\n\'.join() then combines them into a single string with newlines.
print \'\\n\'.join(map(f,textwrap.wrap(txt,screen_width)))