控制台一行有多少个字符?
我想知道在一个交互式的命令行里,用Python怎么能找出一行中在换行符之前有多少个字符?(通常是80个字符)
5 个回答
3
curses.tigetnum('cols')
是一个用于获取终端窗口列数的命令。
3
我不太清楚在 python
里具体怎么做,
但在命令行中,环境变量 $COLUMNS
包含了你想要的信息。
3
你可以使用 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 库来解决这样一个简单的问题,正如 Ignacio Vazquez-Abrams 提出的,那么你需要执行三条语句,而不是一条:
>>> import curses
>>> curses.setupterm()
>>> curses.tigetnum('cols')
180
如果终端被调整大小,那么在使用 setupterm
查询新的终端宽度之前,需要先调用这个函数。