сколько символов в строке в консоли? - PullRequest
3 голосов
/ 21 января 2010

Как я могу узнать, как символы могут находиться в строке перед конечной строкой в ​​интерактивной оболочке с использованием python? (Обычно 80)

Ответы [ 4 ]

3 голосов
/ 21 января 2010
3 голосов
/ 21 января 2010

Я не знаю конкретно в python,
но в оболочке переменная окружения $COLUMNS содержит необходимую информацию.

2 голосов
/ 21 января 2010

Вы можете использовать утилиту tput для запроса количества строк и столбцов, доступных в терминале. Вы можете выполнить его, используя subprocess.Popen:

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

Тот же принцип можно применять и для запроса переменной $COLUMNS, как , упомянутой gregseth:

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

Наконец, если вы в порядке с использованием библиотеки curses для такой простой задачи, как предложенный Игнасио Васкесом-Абрамсом, то обратите внимание, что вам нужно выполнить три заявления, а не одно:

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

Если размер терминала изменяется, то необходимо будет вызвать setupterm, прежде чем можно будет запросить новую ширину терминала, используя tigetnum.

0 голосов
/ 21 января 2010

только * 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...