import os
rows, columns = os.popen('stty size', 'r').read().split()
používá příkaz 'stty size', který je podle vlákna v mailing listu pythonu na linuxu přiměřeně univerzální. Otevře příkaz 'stty size' jako soubor, 'čte' z něj a k oddělení souřadnic používá jednoduché rozdělení řetězce.
Na rozdíl od hodnoty os.environ["COLUMNS"] (ke které nemám přístup, přestože používám bash jako svůj standardní shell) budou data také aktuální, zatímco věřím, že os.environ["COLUMNS"] hodnota by byla platná pouze po dobu spuštění interpretu pythonu (předpokládejme, že uživatel od té doby změnil velikost okna).
(Viz odpověď @GringoSuave o tom, jak to udělat v pythonu 3.3+)
Nejste si jisti, proč je v modulu shutil
, ale přistál tam v Pythonu 3.3. Viz:
Dotaz na velikost výstupního terminálu
>>> import shutil
>>> shutil.get_terminal_size((80, 20)) # pass fallback
os.terminal_size(columns=87, lines=23) # returns a named-tuple
Nízkoúrovňová implementace je v modulu os. Multiplatformní – funguje pod Linuxem, Mac OS a Windows, pravděpodobně na jiných Unixových systémech. Existuje také zadní port, i když již není relevantní.