控制台一行有多少个字符?

5 投票
5 回答
2797 浏览
提问于 2025-04-15 18:16

我想知道在一个交互式的命令行里,用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 查询新的终端宽度之前,需要先调用这个函数。

撰写回答