On Sun, Dec 20, 2020 at 4:12 PM Cameron Simpson <cs@cskk.id.au> wrote:
Untested:
    cls_bs = None

    def clear_screen():
        if cls_bs is None:
            try:
                import curses
            except ImportError:
                cls_bs=curses.tigetstr('clear')
        print(cls_bs.encode(), end='', flush=True)

darn that untested code -- a lot wrong here :-(

But unpacking it, I've come up with this, which seems to work.

import os
import sys

# Define clear_screen function:
try:
    import curses
    curses.setupterm()
    CLS_BS = curses.tigetstr('clear')

    def clear_screen():
        sys.stdout.buffer.write(CLS_BS)
except:  # if anything went wrong, fall back to os.system call
    if os.name == 'posix':
        def clear_screen():
            os.system('clear')
    elif sys.platform == 'win32':
        # ideally something lower level on Windows
        def clear_screen():
            os.system('cls')
    else:
        def clear_screen():
            pass

On Sun, Dec 20, 2020 at 8:06 PM Eryk Sun <eryksun@gmail.com> wrote:
A C or ctypes implementation is required in Windows. 
<snip>

so that could be plugged in to the above, with (or not) a fallback to the system calls.

Anyway, this has been interesting enough to distract me from other things I should be doing, but I'm moving on now ...

-CHB


-- 
Christopher Barker, PhD

Python Language Consulting
  - Teaching
  - Scientific Software Development
  - Desktop GUI and Web Development
  - wxPython, numpy, scipy, Cython