Why is there no platform independent way of clearing a terminal?

Jonathan Hartley tartley at tartley.com
Wed Jul 28 05:49:25 EDT 2010


On Jul 28, 8:08 am, Ulrich Eckhardt <eckha... at satorlaser.com> wrote:
> Daniel Fetchinson wrote:
> > After getting the technicalities out of the way, maybe I should have
> > asked:
>
> > Is it only me or others would find a platform independent python API
> > to clear the terminal useful?
>
> There are two kinds of programs:
> 1. Those that process input to output. If one of those suddenly started by
> clearing my screen, I'd just dump it. Also, if output is redirected to a
> file or piped into another program, that is basically useless or even
> hurting, since you then end up with control sequences in the file.
>
> 2. Those that provide a text-based interactive UI. Those typically not only
> clear the screen, but also control its whole layout and content, so there
> you don't only need ways to clear the screen but also to position the
> cursor or draw boxes etc. In that case you need a full "curses" library.
>
> Summary: No, I don't see the need for such an API.
>
> Cheers!
>
> Uli
>
> --
> Sator Laser GmbH
> Geschäftsführer: Thorsten Föcking, Amtsgericht Hamburg HR B62 932


I don't know much, but just in case the following is useful to anyone:

There is a Windows program called 'ansicon', which when installed (run
with '-i'), will modify all future Windows cmd shells to correctly
intercept and interpret ANSI escape codes for colors, cursor movement,
and:

      \e[#J     ED: Erase Display

which I presume is what is under discussion here. I understand there
are other historical ANSI drivers which were responsible for achieving
a similar thing under Windows, but this is the method I currently use
(on XP) and am very happy with.

Also, and probably less usefully, personally I do wish Python provided
a cross platform mechanism for simple  terminal control like clearing
and colored text. Since ANSI codes are used everywhere except Windows,
it would make sense to base such a system on them. So I started a pure
Python implementation of a crude ANSI driver, on PyPI as 'colorama'.
It does nothing on non-windows systems, but on Windows it patches
sys.stdout with a stream-like object, in order to filter out ANSI
codes and convert them into Win32 terminal control calls. It currently
only works with colors and brightness, but I would love to extend it
to cover other ANSI codes such as 'clear screen'. It is doubtless
riddled with errors and misunderstandings, and I would love any
feedback helping me do a better job.

Best regards,

  Jonathan



More information about the Python-list mailing list