如何在屏幕中间打印?

时间:2015-04-21 18:14:11

标签: python

例如,

print "hello world"

在屏幕中间而不是开始?示例输出如下:

                                   hello world

8 个答案:

答案 0 :(得分:8)

Python 3提供shutil.get_terminal_size(),您可以使用str.center来使用空格居中:

import shutil

columns = shutil.get_terminal_size().columns
print("hello world".center(columns))

如果您不使用Python 3,请改用os.get_terminal_size()

正如@ br1ckb0t所提到的,这在Python 2中不方便。但是,我建议不要使用不太方便的方法来改用Python 3。

答案 1 :(得分:2)

与手工操作相同:添加额外的空格。

如果你的意思是要真正了解显示器的几何形状,那么你必须要求库来寻找这样的东西。例如curses模块。

  

curses模块提供了curses库的接口,这是便携式高级终端处理的事实标准。

答案 2 :(得分:2)

如果这是一个终端窗口,请完全按照您的操作进行操作。如果您想要一致性,可以尝试使用制表符(\t)来保持一致。否则,请遵循Hurkyl关于使用curses模块的答案。

>>> print "\t\t\t Hello World!"
             Hello World! # Output

答案 3 :(得分:1)

有关在Python 3上执行此操作的好方法,请参阅@ minitech的答案,但在Python 2上,可以使用subprocess(至少在OS X上)完成此操作:

import subprocess

def print_centered(s):
    terminal_width = int(subprocess.check_output(['stty', 'size']).split()[1])
    print s.center(terminal_width)

答案 4 :(得分:0)

这样您就可以打印前导空格:

   print ' '*5, 'hello'

答案 5 :(得分:0)

您可以使用center()将文字放在中间。

例如:

str = "Hello World";
print str.center(20)

答案 6 :(得分:0)

我创建了一个辅助函数:

import operator

SCREEN_WIDTH = 80
centered = operator.methodcaller('center', SCREEN_WIDTH)

print(centered("hello world"))

答案 7 :(得分:0)

一个版本的get_termial_size应该适用于python2,经过测试但在ubuntu上没有广泛使用:

from collections import namedtuple

def get_terminal_size():
    import struct
    from fcntl import ioctl
    from termios import TIOCGWINSZ
    Res = namedtuple("terminal_sizes", field_names=["columns","lines"])
    try:
        term = struct.unpack('hhhh', ioctl(0, TIOCGWINSZ, '\000' * 8))
    except IOError:
        return Res(24, 80)
    return Res(term[0], term[1])



In [23]: print("Hello world".center(get_terminal_size().columns))
                              Hello world