Как очистить консоль в python
Перейти к содержимому

Как очистить консоль в python

Очистить консоль python в PyCharm

Пишу простой алгоритм reinforcement learning, в котором есть простенькая анимация, посредствам вывода в консоль. Так вот, чтобы показать новый кадр анимации, мне надо как-то эту консоль очистить. Сейчас использую print(100*’\n’) , но это выглядит не очень красиво из-за прокрутки консоли. Использую PyCharm IDE, если это важно. Пробовал os.system(‘cls’) и print(‘\k’) — не работает. Можно ли как-то очищать консоль, чтобы заново выводить в нее новый кадр анимации? P.S. Стоит добавить: кадр — квадратная матрица размера n, каждый элемент которой — отдельный символ: =, если клетка пустая, А — если в клетке агент, Е — если в клетке враг. Матрица обновляется и выводится новый кадр. Сейчас n=7. Общее количество кадров заранее не может быть известно.

Отслеживать

47.9k 17 17 золотых знаков 56 56 серебряных знаков 100 100 бронзовых знаков

задан 6 мая 2020 в 18:09

518 1 1 золотой знак 4 4 серебряных знака 15 15 бронзовых знаков

Python-сообщество

[RSS Feed]

  • Начало
  • » Python для новичков
  • » Очистить консоль

#1 Ноя. 16, 2009 16:19:27

dreamcode От: Зарегистрирован: 2009-11-16 Сообщения: 7 Репутация: 0 Профиль Отправить e-mail

Очистить консоль

Вот весь скрипт. OS -Linux MAndriva

#!/usr/bin/python
# -*- coding: utf-8 -*-
import os,sys

def clearConsol():
if sys.platform==’win32′:
os.system(‘cls’)
else:
os.system(‘clear’)
clearConsol()

#2 Ноя. 16, 2009 18:03:50

sypper-pit От: Ulan-Ude(msk) Зарегистрирован: 2009-01-30 Сообщения: 1102 Репутация: 6 Профиль Отправить e-mail

Очистить консоль

#!/usr/bin/python
# -*- coding: utf-8 -*-

import os, sys

def clearConsol():
if sys.platform=='win32': os.system('cls')
else:
os.system('clear')

clearConsol()

думаю так надо, у меня на фряшке и на винде, нормально отработало. Какой у тебя питон ?

Отредактировано (Ноя. 16, 2009 18:10:35)

#3 Ноя. 16, 2009 19:34:40

dreamcode От: Зарегистрирован: 2009-11-16 Сообщения: 7 Репутация: 0 Профиль Отправить e-mail

Очистить консоль

#!/usr/bin/python
# -*- coding: utf-8 -*-

import os, sys

def clearConsol():
if sys.platform=='win32': os.system('cls')
else:
os.system('clear')

clearConsol()

думаю так надо, у меня на фряшке и на винде, нормально отработало. Какой у тебя питон ?

#4 Ноя. 16, 2009 21:44:02

dreamcode От: Зарегистрирован: 2009-11-16 Сообщения: 7 Репутация: 0 Профиль Отправить e-mail

Очистить консоль

Всё решил проблему… всем спасибо .

#5 Ноя. 28, 2016 03:51:54

Schlange Зарегистрирован: 2016-11-28 Сообщения: 38 Репутация: 1 Профиль Отправить e-mail

Очистить консоль

Скажите пожалуйста, а почему такая банальная команда требует столько строк с подключением библиотек и проверки оси?
Например print есть, а встроенного clear нет. Почему так?

ubuntu 14.04 / manjaro 16.10

#6 Ноя. 28, 2016 04:09:21

py.user.next От: Зарегистрирован: 2010-04-29 Сообщения: 9639 Репутация: 839 Профиль Отправить e-mail

Очистить консоль

Schlange
Например print есть, а встроенного clear нет.

У меня есть встроенный clear(), только, как показала практика, он нафиг не нужен никогда.

[guest@localhost ~]$ cat /usr/lib/python3.3/site-packages/my.py
# -*- encoding: utf-8 -*-

import os

def clear():
os.system("clear")

[guest@localhost ~]$
[guest@localhost ~]$ cat .pythonrc.py 

try:
from my import clear
except ImportError:
pass
[guest@localhost ~]$

Schlange
Почему так?

Я, вообще, чищу экран, но делаю это через комбинацию Ctrl + c + c в Emacs’е, которую сам же и привязал к своей же функции очистки на базе встроенной функции.

(defun clear-buffer() 
"Clear current buffer."
(interactive)
(erase-buffer)
(message "Buffer cleared"))

~/.emacs.d/init-key-bindings.el

(global-set-key (kbd "C-c c") 'clear-buffer)

Так что это как с инопланетянами: почему они не отвечают на наши радиосигналы? Да потому что этот вид связи (радио) для них выглядит таким же примитивным, как для нас выглядит дым от костра, которым папуасы пытаются с нами связаться, сидя у себя на острове в лесу. Мы даже если заметим их, нам просто неинтересно с ними связываться.

Как только поднимешься выше, тебе просто не нужно будет многое, что нужно сейчас. А всё что будет нужно, ты сделаешь себе сам, потому что это элементарно.

Отредактировано py.user.next (Ноя. 28, 2016 04:28:19)

Безмодульный скролл в консоли и правильная очистка строк.

Как в питоне реализовать скролл в терминале без подключения 49124128 модулей?
Допустим мне надо ограничить вывод 50 строками остальное уходит в скролл.

И как делать правильно очистку всего терминала или определенной строки?
Сейчас я делаю это очень топорно:
__import__(‘os’).system(«reset»)

Это занимает порядка 0.3 секунд и вообще это неправильно. Я уверен.

VictimOfLoveToLinux ★
19.04.12 19:52:17 MSK

С задержкой/очисткой разобрался.

import os print "привет мир" os.system('clear') print "пока мир" 

Всё не могу привыкнуть к import.
Вопрос о скролле всё ещё актуален.
VictimOfLoveToLinux ★
( 19.04.12 21:14:17 MSK ) автор топика

Мне кажется, имеет смысл использовать ncurses

kostik1
( 19.04.12 21:20:06 MSK )
Ответ на: комментарий от VictimOfLoveToLinux 19.04.12 21:14:17 MSK

занимаешься какой-то херней. лучше разберись с терминалом, управляющими последовательностями и всем таким. это же тебе не дос с паскалебейсиком.

на вот тебе, читай:

а лучше возьми либу какую-нибудь типа ncurses или slang

anonymous
( 19.04.12 21:24:21 MSK )
Ответ на: комментарий от anonymous 19.04.12 21:24:21 MSK

Почему херней?
Есть 2 скрина внутри одного терминала. Естественно им двум нужен разный скролл тк я не использую gtk etc.

VictimOfLoveToLinux ★
( 19.04.12 21:33:26 MSK ) автор топика
Ответ на: комментарий от VictimOfLoveToLinux 19.04.12 21:33:26 MSK

потому что вызываешь системную команду из питона вместо того, чтобы использовать какую-нибудь библиотеку для работы с терминалом. а еще ты пишешь очень странные конструкции типа __import(‘os’)__.system(‘clear’), вместо того, чтобы разобраться с языком и модулями.

anonymous
( 19.04.12 21:39:13 MSK )
Ответ на: комментарий от anonymous 19.04.12 21:39:13 MSK

Основные модули скудны а посторонние не хочу.

VictimOfLoveToLinux ★
( 19.04.12 21:44:23 MSK ) автор топика
Ответ на: комментарий от anonymous 19.04.12 21:39:13 MSK

Нормальная конструкция :з если надо всего один раз использовать os то она идеальна.

VictimOfLoveToLinux ★
( 19.04.12 21:45:04 MSK ) автор топика
Ответ на: комментарий от anonymous 19.04.12 21:39:13 MSK

вот тебе пример:

#!/usr/bin/python import sys def clear(): sys.stdout.write('\033[1J') sys.stdout.write('\033[;H') print 'hello' clear() print 'world' 

и читай про управляющие последовательности терминала

anonymous
( 19.04.12 21:45:16 MSK )
Ответ на: комментарий от VictimOfLoveToLinux 19.04.12 21:45:04 MSK

если один раз, то нормально, но ты же не этого хочешь.

anonymous
( 19.04.12 21:46:27 MSK )
Ответ на: комментарий от anonymous 19.04.12 21:46:27 MSK

Ты ещё не видел как я запилил разделение экрана терминала для одновременной работы в нем двух скриптов :з.

VictimOfLoveToLinux ★
( 19.04.12 21:49:49 MSK ) автор топика
Ответ на: комментарий от VictimOfLoveToLinux 19.04.12 21:49:49 MSK

вот тебе еще код:

#!/usr/bin/python import sys import time def scrollpart(f, t): sys.stdout.write('\033[%s;%sr' % (f, t)) scrollpart(1, 10) for i in xrange(100): print i time.sleep(0.1) 

anonymous
( 19.04.12 21:55:29 MSK )

Тебе нужен ncurses.

schizoid ★★★
( 19.04.12 22:01:12 MSK )
Ответ на: комментарий от schizoid 19.04.12 22:01:12 MSK

Матерь божья! Тонны моего кода на свалку.

VictimOfLoveToLinux ★
( 19.04.12 22:07:33 MSK ) автор топика
Ответ на: комментарий от VictimOfLoveToLinux 19.04.12 22:07:33 MSK

Добро пожаловать в реальный мир.

В следующий раз, прежде чем лепить лисапет (сколь заманчивым не казалось), ищи уже готовые библиотеки.

BTW, на будущее: пиши код так, чтоб его приходилось минимально переделывать при подобных изменениях в отдельных частях.

schizoid ★★★
( 19.04.12 22:56:58 MSK )
Ответ на: комментарий от schizoid 19.04.12 22:56:58 MSK

Я или гуглить не умею или в сети реально мало годных описаний для модулей питона.
Казалось бы нагуглить модуль который делит экран на две части гиппер просто.
Но нет. Я 3ое суток гуглил и без результата.

Немного потыкал Urwid. Тоже годнота.

VictimOfLoveToLinux ★
( 19.04.12 23:00:12 MSK ) автор топика
Ответ на: комментарий от VictimOfLoveToLinux 19.04.12 23:00:12 MSK

HATE

schizoid ★★★
( 19.04.12 23:02:56 MSK )
Ответ на: HATE от schizoid 19.04.12 23:02:56 MSK

Ну без конкретики. Заголовок вообще ни разу не намекает. «Что-то там где-то там работа с чем-то там»

У питона вообще самый плохой FAQ который я когда-либо читал.

Самый годный у PHP. После каждого описания есть годный explame с комментариями.

А чтобы осилить питон мне приходится изучать всю такую страницу с информацией которая мне мало необходима на данный момент.

VictimOfLoveToLinux ★
( 19.04.12 23:07:45 MSK ) автор топика
Ответ на: комментарий от VictimOfLoveToLinux 19.04.12 23:07:45 MSK

Это дока, а не обучалка. Предполагается, что читатель уже ознакомился с NCURSES programming howto.

Тебе всё равно придётся рано или поздно ознакамливаться с такими простынями. IMHO, лучше это делать на домашних проектах, чем на рабочих на производстве, где жмут сроки, или на каких-то абстрактных, высосанных из пальцев примерах.

schizoid ★★★
( 19.04.12 23:33:40 MSK )
Ответ на: комментарий от VictimOfLoveToLinux 19.04.12 21:45:04 MSK

Нормальная конструкция :з если надо всего один раз использовать os то она идеальна.

Она предельно бредова. Модуль os по любому грузится и висит в памяти, переменная os все равно как правило содержит именно этот модуль, а синтаксис у такой конструкции просто ужасен.

Основные модули скудны а посторонние не хочу.

Про основные модули во первых смешно, во вторых неправда;-)

Как очищать консоль?

Пытался реализовать секундомер в консоли, но не нашел способа, как очищать консоль, при новой выдаче. Суть в том, что нужно чтобы значения обновлялись, а не выводились каждый раз на новую строку. Сам код:

import time, os seconds,minutes,hours = 0,0,0 while True: time.sleep(1) if seconds == 60: seconds = 0 minutes+=1 if minutes == 60: minutes = 0 hours+=1 if hours > 0: print(f" :  :  : ") elif minutes > 0: print(f" :  : ") else: print(f" : ",sep='',end='\r') os.system('cls||clear') seconds+=1 

Пишу на Windows, VSCode.

Отслеживать

6,497 2 2 золотых знака 8 8 серебряных знаков 23 23 бронзовых знака

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *