انجمنهای فارسی اوبونتو
کمک و پشتیبانی => برنامهسازی => نویسنده: AAAAAAAAAAAAAAAAAAAA در 23 بهمن 1393، 12:57 بظ
-
اقا چجوری میشه کل متن هایی که تو برنامه print شده رو پاک کرد بعد یه چیز دیگه print کرد ؟
مثل aptitude وقتی که شروع میشه
-
http://stackoverflow.com/questions/4810537/how-to-clear-the-screen-in-python
-
import system
.
.
..
os.system('cls' if os.name == 'nt' else 'clear')
-
@geek
ممنونم
@mehrzadmo
از شما هم ممنونم
ولی جوری که شما شرطی گذاشتید به نظر میاد پورتابل بودن مد نظر باشه و در این صورت به کار بردن else فکر نکنم خیلی صحیح باشه چون python با وجود cpython رو پلتفورم های غیر پازیکس زیادی اجرا میشه و clear روی اون ها کار نمی کنه
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
ولی از همه اینها که بگذریم اصلا منظور من که این نبود! clear میزنه کل ترمینال رو پاک می کنه ! من گفتم :
اقا چجوری میشه کل متن هایی که تو برنامه print شده رو پاک کرد بعد یه چیز دیگه print کرد ؟
مثل aptitude وقتی که شروع میشه
-
اگر شما باهاش موردی داری می تونی به این شکل بنویسی :
if os.name="nt" :
os.syste("cls")
else:
os.system("clear")
حتی در صورتی که ممکنه برنامه شما روی پلت فروم دیگه ای ! اجرا بشه هم میتونید خیلی ساده اونو اضافه کنید .
یا حتی از دستور switch استفاده کنید .
برای سادگی کار هم میشه اینو گذاشت تو یه تابع و ...
-----
همچنان هم متوجه نشدم ! یعنی چی تو برنامه پرینت شده ؟ میشه یه مثال بزنی ؟
-
سلام
فکر کنم منظورشون اینه که مثلاً جملهای مثل « دو عدد صحیح را وارد کنید » درون خط فرمان چاپ بشه بعدش اگر بخواهیم این جمله را پاک کنیم باید چگونه این کار را انجام دهید. (نکته: فقط همین جمله از خط فرمان پاک بشه نه چیز دیگه)
-
خیلی ببخشید که تاپیک زیر خاکی بالا میارم ولی من هنوز به جواب نرسیدم
اخرش چجوری میشه اینکارو کرد؟
@mehrzadmo
مثل aptitude وقتی اجرا میشه :'(
-
apitude روی همون خط دوباره مینویسه، چیزی رو پاک نمیکنه
-
درود بر شما
اگر درست متوجه شده باشم سوال شما در این مورده که می خواهید به صفحه ترمینال دسترسی تصادفی داشته باشید. یعنی در هر جای صفحه که مایل بودید بتونید بنویسید. به عنوان مثال در بالای صفحه همیشه یک خط شامل تاریخ و ساعت و مثلا نام کاربر چاپ شده باشه و با نوشته شدن خط های جدید به بالا اسکرول نشه.
برای این موضوع می تونید از پکیج Curses استفاده کنید. توصیه می کنم قبل از درگیر شدن با موضوع یک سرچی هم بزنید جون پکیج های مشابه هم هستند که ممکنه به کار شما بیان.
https://docs.python.org/2/howto/curses.html
-
جواب شما کارکتر کنترلی <CR> (http://en.wikipedia.org/wiki/Carriage_return) هست. لطفاً به مثال زیر توجه کنید:
در برنامهٔ پایین هر بار یک مقدار چاپ و بعد از چرخش دوبارهٔ حلقه پاک و بعد با مقدار جدید جایگزین میشه. تابع sleep در خّط آخر تنها به منظور کاهش سرعت جایگزینشدن مقادیر اومده.
from time import sleep
for digit in range(50):
print("{0}\r".format(digit), end='')
sleep(0.2)
-
من توی کد امروزم چیزی شبیه به این استفاده کردم:
for row in rows:
rowCounter += 1
if not (rowCounter % 1000):
sys.stdout.write("\rprocessing %s (%d/%d) : %d out of %d, %d%%" % (
thisCustomerName, customerCounter, len(customers), rowCounter, rowTotal,
rowCounter * 1.0 / rowTotal * 100))
sys.stdout.flush()