例如,
print "hello world"
在屏幕中间而不是开始?示例输出如下:
hello world
答案 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