On Sun, 06 Jul 2008 23:42:26 +0200, TP <[EMAIL PROTECTED]> wrote: > > $ python -c "print '\033[30;44m foo \033[0m'" [writes an escape sequence to stdout]
> $ echo -e $esc$ColorBlackOnDarkblue foo $esc$ColorReset [also writes an escape sequence to stdout] > $ echo -n $esc$ColorBlackOnDarkblue foo $esc$ColorReset > \033[30;44m foo \033[0m [snip, shuffle] > $ export esc="\033" > $ export ColorBlackOnDarkblue="[30;44m" > $ export ColorReset="[0m" > > import os > Color = os.environ['ColorBlackOnDarkblue'] > ColorReset = os.environ['ColorReset'] > Esc = os.environ['esc'] > print '%s%s%s%s%s' % (Esc, Color, " foo ", Esc, ColorReset) [snip] > $ python color.py > \033[30;44m foo \033[0m The string "\033" is 4 characters long. Your shell variable "esc" is 4 characters long. Your Python program prints those four characters. You want it to re-interpret those 4 characters into a single escape character. One of this group's regular participants can (I hope) tell us three breathtakingly elegant ways to do that. I'm sorry I can't. When you run echo, it recognizes the 4-character "esc" as a convention for representing a single character, and performs the re-interpretation for you. When you tell python "print '\033[30;44m foo \033[0m'", python interprets the "\033" as a single character. -- To email me, substitute nowhere->spamcop, invalid->net. -- http://mail.python.org/mailman/listinfo/python-list