控制台中有多少个字符?

时间:2010-01-20 21:26:31

标签: python shell

如何在使用python的交互式shell中的结束行之前找到一行中的字符? (通常是80)

4 个答案:

答案 0 :(得分:3)

我在python中没有具体说明,
但在shell中,环境变量$COLUMNS包含您想要的信息。

答案 1 :(得分:3)

答案 2 :(得分:2)

您可以使用tput实用程序查询终端中可用的行数和列数。您可以使用subprocess.Popen执行它:

>>> import subprocess
>>> tput = subprocess.Popen(['tput', 'cols'], stdout=subprocess.PIPE)
>>> int(tput.communicate()[0].strip())
180

同样的原则也适用于通过gregseth将$COLUMNS变量查询为mentioned

>>> tput = subprocess.Popen(['echo $COLUMNS'], shell=True, stdout=subprocess.PIPE)
>>> int(tput.communicate()[0].strip())
180

最后,如果你可以使用curses库来解决这个简单的问题,如Ignacio Vazquez-Abrams的proposed,那么请注意你需要执行三个语句,而不是一个:

>>> import curses
>>> curses.setupterm()
>>> curses.tigetnum('cols')
180

如果调整终端大小,则需要先调用setupterm,然后才能使用tigetnum查询新的终端宽度。

答案 3 :(得分:0)

仅限* nix

>>> import sys,struct,fnctl,termios
>>> fd = sys.stdin.fileno()
>>> s = struct.pack("HH", 0,0)
>>> size=fcntl.ioctl(fd, termios.TIOCGWINSZ,s)
>>> struct.unpack("HH", size)[-1]
157