问题
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