<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 12 (filtered medium)"><!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
        {mso-style-priority:99;
        mso-style-link:"Balloon Text Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:8.0pt;
        font-family:"Tahoma","sans-serif";}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.BalloonTextChar
        {mso-style-name:"Balloon Text Char";
        mso-style-priority:99;
        mso-style-link:"Balloon Text";
        font-family:"Tahoma","sans-serif";}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="2050" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal>Hi All,<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Please look at the code below.<o:p></o:p></p><p class=MsoNormal>I am using pypi progressbar. But in general, How can I keep the area of the console fixed for  the thread to print its status on it.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>{{{<o:p></o:p></p><p class=MsoNormal>import sys<o:p></o:p></p><p class=MsoNormal>import time<o:p></o:p></p><p class=MsoNormal>import threading<o:p></o:p></p><p class=MsoNormal>import os<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>from progressbar import AnimatedMarker, Bar, BouncingBar, Counter, ETA, \<o:p></o:p></p><p class=MsoNormal>                        FileTransferSpeed, FormatLabel, Percentage, \<o:p></o:p></p><p class=MsoNormal>                        ProgressBar, ReverseBar, RotatingMarker, \<o:p></o:p></p><p class=MsoNormal>                        SimpleProgress, Timer<o:p></o:p></p><p class=MsoNormal>                        <o:p></o:p></p><p class=MsoNormal>def ProgBar():<o:p></o:p></p><p class=MsoNormal>    widgets = [' ', Percentage(), ' ', Bar(marker='#',left='[',right=']'),' ']<o:p></o:p></p><p class=MsoNormal>    pbar = ProgressBar(widgets=widgets, maxval=100)<o:p></o:p></p><p class=MsoNormal>    pbar.start()<o:p></o:p></p><p class=MsoNormal>    return pbar<o:p></o:p></p><p class=MsoNormal>    <o:p></o:p></p><p class=MsoNormal>def update2(i):<o:p></o:p></p><p class=MsoNormal>    os.environ["PBAR"] = i<o:p></o:p></p><p class=MsoNormal>    print(“This will print for every call to update”)<o:p></o:p></p><p class=MsoNormal>    return <o:p></o:p></p><p class=MsoNormal>    <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>class MyThread(threading.Thread):<o:p></o:p></p><p class=MsoNormal>    def run(self):<o:p></o:p></p><p class=MsoNormal>        l = 0<o:p></o:p></p><p class=MsoNormal>        while True:<o:p></o:p></p><p class=MsoNormal>            n = os.getenv("PBAR", "")<o:p></o:p></p><p class=MsoNormal>            if len(n) != 0:<o:p></o:p></p><p class=MsoNormal>                n = int(n)<o:p></o:p></p><p class=MsoNormal>                if n > l:<o:p></o:p></p><p class=MsoNormal>                    pbar.update(n)<o:p></o:p></p><p class=MsoNormal>                    l = n<o:p></o:p></p><p class=MsoNormal>                    if n == 100:<o:p></o:p></p><p class=MsoNormal>                        break <o:p></o:p></p><p class=MsoNormal>                else:<o:p></o:p></p><p class=MsoNormal>                    continue       <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>pbar = ProgBar()<o:p></o:p></p><p class=MsoNormal>mythread = MyThread()<o:p></o:p></p><p class=MsoNormal>mythread.daemon = True  <o:p></o:p></p><p class=MsoNormal>mythread.start() <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>        <o:p></o:p></p><p class=MsoNormal>for i in range(101):<o:p></o:p></p><p class=MsoNormal>    update2("{0}".format(i))<o:p></o:p></p><p class=MsoNormal>    time.sleep(0.25)<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>  }}}  <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>{{{<o:p></o:p></p><p class=MsoNormal>Output:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><img width=712 height=334 id="Picture_x0020_0" src="cid:image002.jpg@01CCAAEC.CFE44870" alt=output.jpeg><o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>}}}<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>But I require the output to be of type:<o:p></o:p></p><p class=MsoNormal>{{{<o:p></o:p></p><p class=MsoNormal>13%  [###########                               ]<o:p></o:p></p><p class=MsoNormal>This will print for every call to update<o:p></o:p></p><p class=MsoNormal>This will print for every call to update<o:p></o:p></p><p class=MsoNormal>This will print for every call to update<o:p></o:p></p><p class=MsoNormal>This will print for every call to update<o:p></o:p></p><p class=MsoNormal>This will print for every call to update<o:p></o:p></p><p class=MsoNormal>}}}<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>This is just a sample piece of code for narrowing down the problem. <o:p></o:p></p><p class=MsoNormal>How can I fix the cursor position fix for the thread which is updating my progressbar .?<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thanks<o:p></o:p></p><p class=MsoNormal>Nikunj<o:p></o:p></p><p class=MsoNormal>Bangalore-India<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>