Here's a function to maximize the current console window. It uses ctypes to call WinAPI functions. First it calls GetLargestConsoleWindowSize in order to figure how big it can make the window, with the option to specify a number of lines that exceeds this in order to get a scrollback buffer. To do the work of resizing the screen buffer it simply calls mode.com via subprocess.check_call. Finally, it gets the console window handle via GetConsoleWindow and calls ShowWindow to maximize it.
import os import ctypes import msvcrt import subprocess from ctypes import wintypes kernel32 = ctypes.WinDLL('kernel32', use_last_error=True) user32 = ctypes.WinDLL('user32', use_last_error=True) SW_MAXIMIZE = 3 kernel32.GetConsoleWindow.restype = wintypes.HWND kernel32.GetLargestConsoleWindowSize.restype = wintypes._COORD kernel32.GetLargestConsoleWindowSize.argtypes = (wintypes.HANDLE,) user32.ShowWindow.argtypes = (wintypes.HWND, ctypes.c_int) def maximize_console(lines=None): fd = os.open('CONOUT$', os.O_RDWR) try: hCon = msvcrt.get_osfhandle(fd) max_size = kernel32.GetLargestConsoleWindowSize(hCon) if max_size.X == 0 and max_size.Y == 0: raise ctypes.WinError(ctypes.get_last_error()) finally: os.close(fd) cols = max_size.X hWnd = kernel32.GetConsoleWindow() if cols and hWnd: if lines is None: lines = max_size.Y else: lines = max(min(lines, 9999), max_size.Y) subprocess.check_call('mode.com con cols={} lines={}'.format( cols, lines)) user32.ShowWindow(hWnd, SW_MAXIMIZE)