如何找到终端中可用线路的数量?
最好以跨平台的方式,但欢迎任何建议(甚至特定于操作系统)。
可以使用os
模块找到终端的高度和长度,但这并未考虑可能已使用的行数。
这里澄清一些例子:
在此示例中,终端的高度为33,但由于使用了3条线路,因此只有30条线路可用。
答案 0 :(得分:7)
通过该屏幕截图确定您在Windows上
这是http://code.activestate.com/recipes/440694-determine-size-of-console-window-on-windows/
from ctypes import windll, create_string_buffer
# stdin handle is -10
# stdout handle is -11
# stderr handle is -12
h = windll.kernel32.GetStdHandle(-12)
csbi = create_string_buffer(22)
res = windll.kernel32.GetConsoleScreenBufferInfo(h, csbi)
if res:
import struct
(bufx, bufy, curx, cury, wattr,
left, top, right, bottom, maxx, maxy) = struct.unpack("hhhhHhhhhhh", csbi.raw)
sizex = right - left + 1
sizey = bottom - top + 1
else:
sizex, sizey = 80, 25 # can't determine actual size - return default values
print sizex, sizey, curx, cury
这将为您提供屏幕尺寸和光标位置。
cury
是该行,因此您可以计算剩余的行数。
但是,您可能需要在进度时重新检查控制台窗口大小,因为用户可能随时调整窗口大小。
答案 1 :(得分:1)
确定终端大小(对于任何OS平台)-
import os
size = os.get_terminal_size()
print(size)
生成的输出将是:os.terminal_size(columns=80, lines=24)
在这里,列是终端窗口的宽度,行是高度(80和24只是参考值)。
您可以将它们用作print("-"*size.columns)
或其他任何名称。我希望这会有所帮助!