如何用Python在shell中右对齐段落?
我正在做一个互动式的命令行界面,用户可以输入一些文字,然后以对话的方式收到回复。在最近的安卓和苹果手机的短信界面上,你会看到自己发的文字靠左对齐,而收到的文字靠右对齐。
我想在Linux的命令行中实现这样的效果(不需要花哨的图形,只要输入和输出的流畅显示)。
我知道有format()
和rjust()
这两个方法,但它们需要你提前知道要填充多少个字符,而我不知道当前命令行的宽度。
我可以使用或安装任何库,主要是针对Linux平台,不过如果能跨平台那就更好了。
3 个回答
0
如果你需要让多行输出右对齐,可以结合以下几个步骤:
- 获取窗口的宽度:可以参考这个链接了解如何在Python中获取Linux控制台窗口的宽度:如何在Python中获取Linux控制台窗口宽度
- 使用textwrap.wrap
- 使用rjust方法
大概可以这样做:
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)))
2
正如之前提到的,使用curses库。如果你不想用curses,对于一些简单的情况,你可以使用 COLUMNS
这个环境变量(这里有更多信息)。
2
可以使用 curses 这个库。
用 window.getmaxyx()
这个方法可以获取终端的大小。
还有另外一个选择:
import os
rows, cols = os.popen('stty size', 'r').read().split()