Getting the amount of available lines in a terminal

六眼飞鱼酱① 提交于 2019-12-08 19:28:29

问题


How can the amount of available lines in a terminal be found?

Preferably in a cross-platform manner but any suggestions (even OS-specific) are welcome.

The height and length of a terminal can be found using the os module however this does not take into account the amount of lines that may already have been used.

To clarify things here is an example:

In this example the height of the terminal here is 33 however since 3 lines have been used, only 30 lines are available.


回答1:


Determining by that screen shot, you are on Windows

This is from 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

That will give you screen size, and the cursor position.

cury is the line, so you can calculate the number of lines left.

However, you may want to re-check the console window size as you progress, as the user may resize the window at any time.



来源:https://stackoverflow.com/questions/48549535/getting-the-amount-of-available-lines-in-a-terminal

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!