Zeilenlänge der Konsole bestimmen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Hartmannsgruber
User
Beiträge: 89
Registriert: Mittwoch 15. Januar 2014, 22:30
Wohnort: Bad Kötzting
Kontaktdaten:

Servus liebes Forum,

ich hätte eine vermutlich ganz einfache Frage, nur habe ich im Internet leider keine Lösung dazu finden können.

Es handelt sich dabei um ein Programm das ich auf der Konsole ausführe.
Wie kann ich die Breite des Konsolenfensters, sprich die maximale Anzahl an Zeichen feststellen die in eine Zeile geschrieben werden kann
ohne das ein Umbruch stattfindet?

Grund:
Ich möchte einen Trennstrich "########" ausgeben lassen der von links nach rechts verläuft und im kleinen, sowie im maximierten Fenster genau von einer
Seite zur anderen Seite reicht.

LG
Hartmannsgruber
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Code: Alles auswählen

import shutil

def fill_terminal_line(character):
    size = shutil.get_terminal_size()
    line_width = size.columns
    print(line_width * character, end='')
Die Ausgabe geht aber kaputt, falls anschließend die Fenstergröße verändert wird. In welchem Zusammenhang brauchst du das denn? Nutzt du ein linuxbasiertes oder ein Windows-System?
Hartmannsgruber
User
Beiträge: 89
Registriert: Mittwoch 15. Januar 2014, 22:30
Wohnort: Bad Kötzting
Kontaktdaten:

Servus snafu,

vielen Dank für deine Antwort.
Ich habe ein kleines Skript geschrieben, dass mir eine .CSV Datei auflistet.
Zwischen den einzelnen Datensätzen soll eine horizontale Trennline dadurch eingefügt werden.

Würde sich mein angesprochenes Problem etwa auch anders lösen lassen?

Ich nutze sowohl Linux als auch Windows.
Linux (Netrunner KDE und Fedora GNOME) auf Laptop und normalen Hauptrechner, aber auf einen Tablet das ich betrieblich nutze läuft Windows 10.
__deets__
User
Beiträge: 14529
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das ist schon die richtige Vorgehensweise. Man kann sich zur Not für ein signal registrieren, das einem mitteilt, wann sich die terminal Größe geändert hat. Ob das aber gerechtfertigt ist, wage ich zu bezweifeln. Wenn man so flexibel sein will, kann man auch gleich zum GUI toolkit greifen.
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Es würde sich robuster, aber dann auch komplizierter lösen lassen. Stichwort wäre die ncurses-Bibliothek, die es jedoch nur für Linux-Systeme gibt (daher fragte ich). Das ist sinnvoll, wenn es um Benutzeroberflächen im Terminal geht, die den ganzen Bildschirm füllen (Dateimanager im Terminal, das Linux Tool top, der nano-Editor, usw). Für den Fall von übersichtlichen Dateiausgaben ist der Ansatz mit print() aber ausreichend.
Antworten