+1  A: 

Colorama: http://pypi.python.org/pypi/colorama

ja
-1 for posting a single link as an answer to a question with 100 bounty.
advs89
+3  A: 

I just ported my example with the animated gif to ASCII animation from my answer here to python. You will need to install the pyglet library from here, as python unfortunately has no built-in animated-gif support. Hope you like it :)

import pyglet, sys, os, time

def animgif_to_ASCII_animation(animated_gif_path):
    # map greyscale to characters
    chars = ('#', '#', '@', '%', '=', '+', '*', ':', '-', '.', ' ')
    clear_console = 'clear' if os.name == 'posix' else 'CLS'

    # load image
    anim = pyglet.image.load_animation(animated_gif_path)

    # Step through forever, frame by frame
    while True:
        for frame in anim.frames:

            # Gets a list of luminance ('L') values of the current frame
            data = frame.image.get_data('L', frame.image.width)

            # Built up the string, by translating luminance values to characters
            outstr = ''
            for (i, pixel) in enumerate(data):
                outstr += chars[(ord(pixel) * (len(chars) - 1)) / 255] + \
                          ('\n' if (i + 1) % frame.image.width == 0 else '')

            # Clear the console
            os.system(clear_console)

            # Write the current frame on stdout and sleep
            sys.stdout.write(outstr)
            sys.stdout.flush()
            time.sleep(0.1)

# run the animation based on some animated gif
animgif_to_ASCII_animation(u'C:\\some_animated_gif.gif')
Philip Daubmeier
Didnt test it with python 3.x, only got 2.6 on my PC. If anyone could test that on 3.x: would be great.
Philip Daubmeier
+1 for actually providing code
advs89
A: 

Simple console animation, tested on python3 in Ubuntu. addch() doesn't like that non-ascii character, but it works in addstr().

#this comment is needed in windows:
#  encoding=latin-1
def curses(win):
    from curses import use_default_colors, napms, curs_set
    use_default_colors()
    win.border()
    curs_set(0)

    row, col = win.getmaxyx()
    anim = '.-+^°*'
    y = int(row / 2)
    x = int((col - len(anim))/2)
    while True:
        for i in range(6):
            win.addstr(y, x+i, anim[i:i+1])
            win.refresh()
            napms(100)
            win.addch(y, x+i, ' ')

if __name__ == "__main__":
    from curses import wrapper
    wrapper(curses)

@Philip Daubmeier: I've tested this under Windoze and it doesn't work :(. There's three basic options going forward: (please choose)

  1. Install a third-party windows-curses library (http://adamv.com/dev/python/curses/)
  2. Apply a windows-curses patch to python (http://bugs.python.org/msg94309)
  3. Abandon curses altogether for something else.
bukzor
did you install pyglet? Which error message showed up? I tested it like I said on windows with python 2.6 and `cmd` console and it worked.
Philip Daubmeier
BTW: you dont necessarily need to use curses, like you see in my answer.
Philip Daubmeier