Очистить терминал linux python

Обновлено: 04.07.2024

Я знаю, что есть похожая тема о консоли Python, но я не знаю, совпадают ли они. Я попробовал систему («очистить»), и она не сработала.

Как очистить окно IDLE Python?

это не дубликат, OP спрашивает о том, как очистить оболочку IDLE, а не консоль Причина, по которой это не работает, заключается в том, что Python запускает новый сеанс оболочки и запускает там команду clear . Это также объясняет, почему cd не работает в system.os . Удерживайте ctrl + j некоторое время, а затем нажмите Enter, это будет лучший способ @ytpillai, Ах, но это дает мне подсказку внизу. Решение, без сомнения, но все же вызывает некоторое удобство.

«Cls» и «clear» - это команды, которые будут очищать терминал (то есть приглашение DOS или окно терминала). На скриншоте вы используете оболочку в IDLE, которая не будет зависеть от таких вещей. К сожалению, я не думаю, что есть способ очистить экран в IDLE. Лучшее, что вы можете сделать, это прокрутить экран вниз по множеству строк, например:

Хотя вы могли бы поместить это в функцию:

А затем позвоните, когда это необходимо, как cls()

Это действительно очищает экран, но вы все равно получаете подсказку «>>>» в последней строке, а не сверху, что, я думаю, делает его менее неэффективным . еще +1 для ясного экрана Это не очистит экран, я все еще могу прокрутить назад! Обратите внимание, что это тег Python. Не зависит от версии. Для всех пользователей Python 3.x print('\n'*100)

os.system('clear') работает на Linux. Если вы используете Windows, попробуйте os.system('CLS') вместо этого.

Вам нужно сначала импортировать ОС следующим образом:

Система os.system ('CLS') работает в Windows. (Python 2.6). Получившийся экран очищается, показывая только «0», который, как я полагаю, является возвращаемым значением для CLS, вверху. Следующая строка имеет приглашение >>>. это делает вызов os для cls во внешней командной строке и не взаимодействует с Idle простоя это не консольное окно. Обе команды clear и cls работают на окнах консоли / терминала. Почему за это проголосовали? Это откроет новую командную строку, очистит ее и закроет

Самый простой ответ на этот вопрос

Невозможно очистить оболочку Python IDLE без интеграции с внешним модулем. Если вы действительно хотите получить чистую чистую свежую оболочку, просто закройте предыдущую оболочку и запустите ее снова.

Это хороший, прямой и практический ответ на этот вопрос; закрыть в режиме ожидания, оставить файл открытым, запустить файл снова, и в режиме ожидания теперь есть новый экран. @Mike_K, это может быть полезно, но не всегда. Прямо сейчас у меня разделенный экран (книга <|> простаивает). Когда я снова выполняю режим ожидания, новый экран приходит в положение / размеры по умолчанию. Так будет очень скучно.

ctrl + L очищает экран в Ubuntu Linux.

В Windows тоже, если вы используете IDLEx. Ура! Так счастлив, что наконец-то получил простое решение! Не работает в Ubuntu 18.04. Тем хуже здесь использование CTRL + J несколько раз. Добавлено в мой сегодняшний хак! Также работать как шарм в MacOS!

Расширение для очистки оболочки можно найти в Issue6143 как «запрос функции». Это расширение включено в IdleX .

Это блестящее расширение для Python Idle. Спасибо вам большое!

Это прекрасно. Также не печатается «0».

Хорошо, просто, делает то, что говорит. Или после import os просто введите os.system("clear") хотя функция удобна, если вам часто нужно очистить экран. os.system («очистить») сработало. Это работает для меня, но я должен набрать "cls ()" Когда я попытался это сделать, командная строка вернула <function cls at 0x024D25D0>, а консоль не

Похоже, что нет способа очистить буфер «оболочки» IDLE.

Способ выполнения команд в Python 2.4+ - использовать модуль подпроцесса . Вы можете использовать его так же, как вы используете os.system .

Если вы выполняете это в консоли python, вам нужно что-то сделать, чтобы скрыть возвращаемое значение (для одного os.system или subprocess.call ), например, присвоить его переменной:

Хм .. Вот что я получаю за то, что я не использую Windows и, следовательно, не могу ее протестировать. Попробуйте subprocess.call ("cls", shell = True)

Мне нравится использовать:

Файл -> Новое окно

В новом окне **

Выполнить -> Python Shell

Проблема этого метода в том, что он очистит все, что вы определили, например переменные.

Кроме того, вы должны просто использовать командную строку.

открыть командную строку

введите "cd c: \ python27"

введите "python example.py", вы должны отредактировать его, используя IDLE, когда он не находится в интерактивном режиме. Если вы находитесь в оболочке Python, файл -> новое окно.

Обратите внимание, что example.py должен находиться в том же каталоге, что и C: \ python27, или в любом другом каталоге, в котором установлен Python.

Затем отсюда вы просто нажимаете клавишу со стрелкой ВВЕРХ на клавиатуре. Вы просто редактируете example.py, используете CTRL + S, затем возвращаетесь в командную строку, нажимаете клавишу со стрелкой ВВЕРХ, нажимаете ввод.

Если командная строка становится слишком загруженной, просто введите «clr»

Команда "clr" работает только с командной строкой, она не будет работать с IDLE.

существует ли какой-либо стандартный метод "поставляется с батареями", чтобы очистить экран терминала от скрипта Python, или мне нужно идти проклятия (библиотеки, а не слова)?

Как насчет escape-последовательностей?

простым и кросс-платформенным решением было бы использовать либо cls команда в Windows или clear в системах Unix. Используется с os.system , это делает хороший один-лайнер:

Почему никто не говорил о просто делаю Ctrl + L .
Конечно, самый простой способ очистки экрана.

Если вы находитесь в системе Linux/UNIX, то печать escape-последовательности ANSI для очистки экрана должна выполнить эту работу. Вы также захотите переместить курсор в верхнюю часть экрана. Это будет работать на любом терминале, который поддерживает ANSI.

Это не будет работать в Windows, если поддержка ANSI не была включена. Может быть эквивалентная последовательность управления для Windows, но я не знаю.

как мудрый человек после публикации, по крайней мере для Linux, вы можете сделать эквивалент Python, который вы можете использовать в командной строке. Это очистит экран больше, чем Linux clear команда (такая, что вы не можете прокрутить вверх, чтобы увидеть свой текст):

для Windows вы можете просто использовать cls .

вот способ Python сделать это:

вот еще один способ Python сделать это (который работает, по крайней мере, на моем компьютере):

I понятия не имею, работает ли это в Windows или на Mac, iOS, Android и т. д., хотя.

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

как сказала ролика в комментариях, вы можете сделать это, чтобы предотвратить печать новой строки:

Что касается меня, самый элегантный вариант:

вы можете попытаться положиться на clear, но он может быть недоступен во всех дистрибутивах Linux. В windows используйте cls, как вы упомянули.

Примечание: это может считаться дурным тоном, чтобы взять под контроль экран терминала. Вы рассматриваете возможность использования опции? Вероятно, было бы лучше позволить пользователю решить, хочет ли он очистить экран.

чистое решение Python.
Не полагается ни на ANSI, ни на внешние команды.
Только ваш терминал должен иметь возможность сказать вам, сколько линий в поле зрения.

версия Python >= 3.3.0

наткнулся на это некоторое время назад

тогда просто используйте clearscreen ()

поэтому просто подумал, что я брошу свои два цента здесь.

никто не дал истинного ответа на вопрос OP, похоже, все либо отвечают :" Нет, не используйте ОС.система() это зло. без объяснений и предоставляет решение, которое опирается на печать новых линий.

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

Это имеет желаемый эффект OP. Он использует ОС.команда system (), поэтому, если это зло, и кто-то знает способ реализации этого с помощью подпроцесса.call () пожалуйста, прокомментируйте, поскольку я также предпочел бы использовать подпроцесс, но не знаком с ним вообще.

вы можете разорвать базу данных terminfo, но функции для этого находятся в curses в любом случае.

python -c "from os import system; system('clear')"

эта функция работает в gnome-terminal, потому что по умолчанию распознает escape-последовательности ANSI. Это дает вам чистое приглашение rows_max расстояние от нижней части терминала, но и точно от того, где он был вызван. Дает вам полный контроль над тем, сколько очистить.

Существует ли какой-либо стандартный метод "поставляется с батареями", чтобы очистить экран терминала от скрипта Python, или мне нужно проклинать (библиотеки, а не слова)?

ОТВЕТЫ

Ответ 1

Как насчет escape-последовательностей?

Ответ 2

Простым и кросс-платформенным решением будет использование либо команды cls в Windows, либо clear в Unix-системах. Используется с os.system , это делает приятный однострочный:

Ответ 3

Почему никто не говорил о простом выполнении Ctrl + L в Windows или Cmd + L в Mac. Наверняка самый простой способ очистки экрана.

Ответ 4

Если вы находитесь в системе Linux/UNIX, тогда печать escape-последовательности ANSI для очистки экрана должна выполнять задание. Вы также хотите переместить курсор в верхнюю часть экрана. Это будет работать на любом терминале, поддерживающем ANSI.

Это не будет работать в Windows, если поддержка ANSI не включена. Для Windows может быть эквивалентная последовательность управления, но я не знаю.

Ответ 5

Для Windows, Mac и Linux вы можете использовать следующий код:

Ролика отметил, что end="" не позволит печатать новую строку после этого.

Ответ 6

Что касается меня, самый элегантный вариант:

Ответ 7

Вы можете попытаться полагаться на ясный, но он может быть недоступен во всех дистрибутивах Linux. В окнах используйте cls, как вы указали.

Примечание. Это может считаться плохой формой для управления экраном терминала. Рассматриваете ли вы вариант? Вероятно, лучше было бы позволить пользователю решить, хочет ли он очистить экран.

Ответ 8

Решение Pure Python.
Не полагается ни на ANSI, ни на внешние команды.
Только ваш терминал должен иметь возможность рассказать вам, сколько строк находится в поле зрения.

версия Python >= 3.3.0

Ответ 9

Пришло какое-то время назад

Затем просто используйте clearscreen()

Ответ 10

Так что просто подумал, что я бросу свои два цента здесь.

Похоже, никто не дал верного ответа на вопрос OP, каждый либо отвечает "НЕ ИСПОЛЬЗУЙТЕ os.system() it evil . " без объяснения причин или предоставляет решение, которое опирается на печать новых строк.

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

Это дает желаемый эффект. Он использует команду os.system(), поэтому, если это зло и кто-то знает способ реализовать это с помощью subprocess.call(), пожалуйста, прокомментируйте, поскольку я также предпочел бы использовать подпроцесс, но совсем не знаком с ним.

Ответ 11

Это очистит окно терминала.

Ответ 12

Это будет работать в обеих версиях Python2 ИЛИ Python3

Ответ 13

Эта функция работает в gnome-terminal, потому что по умолчанию она распознает escape-последовательности ANSI. Это дает вам расстояние CLEAN PROMPT rows_max от нижней части терминала, но также точно от того, где оно было вызвано. Дает вам полный контроль над тем, как очистить.

Для использования в интерактивном режиме: Сначала скопируйте и вставьте функцию copy(. ) в интерактивный режим и посмотрите, работает ли она для вас. Если это так, добавьте указанную выше функцию в файл с именем clear.py. В терминале запускается python, с 'python3'. Введите:

Теперь отпустите файл clear.py в один из перечисленных ниже каталогов path , чтобы Python мог его найти (не перезаписывайте существующие файлы). Чтобы легко использовать с этого момента:

Для использования в терминальном приложении: Поместите функцию copy(. ) в файл с именем clear.py в той же папке с вашим файлом main.py. Вот пример работы с абстрактным (скелетом) из приложения игры Tic Tac Toe (запуск из командной строки: python3 tictactoe.py):

Объяснение: do_print(. ) в строке 19 представлена ​​версия print(. ) , необходимая для отслеживания количества новых строк ( self.rows ). В противном случае вам придется self.rows += 1 повсюду, где print(. ) вызывается во всей программе. Поэтому каждый раз, когда плата перерисовывается, вызывая show_board() , предыдущая плата очищается, и новая доска печатается точно там, где она должна быть. Уведомление self.clear(calling_line=False) в строке 9 в основном подталкивает все до RELATIVE в нижней части терминала, но не очищает исходную линию вызова. Напротив, self.clear(absolute=self.rows) в строке 29 полностью очищает все self.rows расстояние вверх, а не просто подталкивает все вверх относительно нижней части терминала.

Ответ 14

Если вы хотите очистить свой терминал, когда вы используете оболочку Python. Затем вы можете сделать следующее, чтобы очистить экран

Ответ 15

Вы можете прорваться через базу данных terminfo, но функции для этого в любом случае находятся в curses .

Существует ли какой-либо стандартный метод "comes with batteries" для очистки экрана terminal от сценария Python, или мне нужно перейти к curses (библиотеки, а не слова)?

Программа, которую я пишу, принимает команды пользователя из input() , выполняет соответствующие функции и отображает соответствующий текст. После примерно 5 команд текста terminal становится загроможденным, даже когда окно развернуто. То, что я хотел бы сделать, это очистить terminal после каждых.

Я ищу простой способ, чтобы очистить буфер вывода terminal из сценария Python. Я знаю о os.system('clear') , однако это только печатает новые строки, скрывая историю прокрутки от просмотра, а не удаляя ее. Есть ли способ сделать это? Спасибо!

Простым и кросс-платформенным решением было бы использование команды cls в системах Windows или clear в системах Unix. Используется с os.system , это делает хороший однострочный:

А как насчет escape-последовательностей?

Почему никто не говорил о том, чтобы просто сделать Ctrl + L в Windows или Cmd + L в Mac? Конечно, самый простой способ очистить экран.

Я знаю, как очистить графические данные с помощью python лампочек. Мы очищаем данные графика с помощью 'g.clear()' но я хочу очистить график от terminal

Давний наблюдатель, первый раз спрашивающий. Есть ли способ автоматически очистить terminal в Python 3 независимо от того, на какой платформе используется приложение? Я наткнулся на следующее (Из этого ответа ), которое использует ANSI escape-кодов: import sys sys.stderr.write(\x1b[2J\x1b[H) Но.

Если вы находитесь в системе Linux/UNIX, то печать escape-последовательности ANSI для очистки экрана должна выполнить эту работу. Вы также захотите переместить курсор в верхнюю часть экрана. Это будет работать на любом terminal, который поддерживает ANSI.

Это не будет работать на Windows, если не включена поддержка ANSI. Возможно, существует эквивалентная управляющая последовательность для Windows, но я не знаю.

Для Windows, Mac и Linux вы можете использовать следующий код:

ролика указала, что end="" не позволит ему впоследствии напечатать новую строку.

Как по мне, самый элегантный вариант:

Это очистит окно terminal.

Вы можете попытаться положиться на clear, но он может быть доступен не во всех дистрибутивах Linux. На windows используйте cls, как вы уже упоминали.

Примечание: это может считаться дурным тоном, чтобы взять под контроль экран terminal. Вы рассматриваете возможность использования опциона? Вероятно, было бы лучше позволить пользователю решить, хочет ли он очистить экран.

Чистое решение Python.
Не полагается ни на ANSI, ни на внешние команды.
Только ваш terminal должен иметь возможность сказать вам, сколько строк находится в поле зрения.

Python версия >= 3.3.0

Наткнулся на это некоторое время назад

Тогда просто используйте clearscreen()

Так что я просто решил бросить сюда свои два цента.

Кажется, никто не дал истинного ответа на вопрос OP, все либо отвечают: "Нет, не используйте os.system(), это зло. " без объяснения причин, либо предлагают решение, основанное на печати новых строк.

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

Это имеет желаемый эффект OP. Он действительно использует команду os.system(), так что если это зло и кто-то знает способ реализации этого с помощью subprocess.call(), пожалуйста, прокомментируйте, так как я также предпочел бы использовать подпроцесс, но совсем не знаком с ним.

Это будет работать как в версии Python2, так и в версии Python3

python -c "from os import system; system('clear')"

Эта функция работает в gnome-terminal, потому что по умолчанию она распознает escape-последовательности ANSI. Это дает вам чистую подсказку rows_max расстояния от нижней части terminal, но и точно от того места, где она была вызвана. Дает вам полный контроль над тем, сколько нужно очистить.

Переносимость: извините, это не работает в IDLE, но это работает >> очень круто << в интерактивном режиме в terminal (консоль), которая распознает escape-последовательности ANSI. Я проверил это только в Ubuntu 13.10, используя Python 3.3 в gnome-terminal. Поэтому я могу только предположить, что переносимость зависит от Python 3.3 (для функции shutil.get_terminal_size() для результатов BEST) и распознавания ANSI. Функция print(. ) - это Python 3. Я также протестировал это с помощью простой текстовой игры terminal Tic Tac Toe (приложение).

Теперь поместите файл clear.py в один из перечисленных каталогов path , чтобы Python мог найти его (не перезаписывайте существующие файлы). Чтобы легко использовать с этого момента:

Для использования в приложении terminal: поместите функцию copy(. ) в файл с именем clear.py в той же папке, что и ваш основной файл .py. Вот рабочая аннотация (скелет) пример из "крестики-нолики" игровое приложение (запустить от terminal строки: "питон3" крестики- нолики .пы):

Пояснение: do_print(. ) в строке 19 - это версия print(. ) , необходимая для отслеживания того, сколько новых строк было напечатано ( self.rows ). в противном случае вам пришлось бы self.rows += 1 повсюду, где print(. ) вызывается на протяжении всей программы. Таким образом, каждый раз, когда доска перерисовывается с помощью вызова show_board() , предыдущая доска очищается, а новая печатается именно там, где она должна быть. Обратите внимание, что self.clear(calling_line=False) в строке 9 в основном толкает все вверх RELATIVE к нижней части terminal, но не очищает исходную вызывающую линию. Напротив, self.clear(absolute=self.rows) в строке 29 абсолютно очищает все self.rows расстояние вверх, а не просто толкает все вверх относительно дна terminal.

Вы можете прорваться через базу данных terminfo, но функции для этого в любом случае находятся в curses .

Просто быстрый вопрос:
Как очистить экран в оболочке? Я видел такие способы:

Это просто открывает Windows cmd, очищает экран и закрывает, но Я хочу, чтобы окно оболочки было очищено
(PS: я не знаю, помогает ли это, но я использую Python версии 3.3.2)
Спасибо :)

Для OS X вы можете использовать модуль подпроцесса и вызывать 'cls' из Shell:

Чтобы предотвратить отображение «0» в верхней части окна, замените 2-ю строку на:

Для Linux вы должны заменить команду cls на clear

Как насчет ярлыка CTRL + L ?

Это работает для всех оболочек, например Python, Bash, MySQL, MATLAB и т.д.

То, что вы ищете, находится в модуле curses.

Важная заметка

Важно помнить, что перед любым выходом необходимо перевести терминал в нормальный режим, это можно сделать с помощью следующих строк:

Если вы этого не сделаете, вы получите все виды странного поведения. Чтобы это всегда было сделано, я бы предложил использовать модуль atexit, например:

Вероятно, будет хорошо.

Помимо универсальной библиотеки CLI, click также предоставляет независимую от платформы clear() функцию:

Эта функция работает в любой ОС (Unix, Linux, OS X и Windows)
Python 2 и Python 3

В Windows команда cls , в unix-подобных системах команда clear .
platform.system() возвращает имя платформы. Ex. 'Darwin' в OS X.
os.system() выполняет системный вызов. Ex. os.system('ls -al')

используя windows 10 и pyhton3.5 я протестировал много кодов, и ничто не помогло мне больше, чем это:

Сначала определите простую функцию, эта функция напечатает 50 новых строк (число 50 будет зависеть от того, сколько строк вы видите на экране, поэтому вы можете изменить это число)

затем просто позвоните столько раз, сколько вы хотите или нужно

Вот несколько вариантов, которые вы можете использовать в Windows

Третий вариант, если вы находитесь в окне Python REPL:

Если вы используете терминал Linux для доступа к Python, то cntrl + l - лучшее решение для очистки экрана.

Более простой способ очистить экран в Python - использовать Ctrl + L хотя это работает для Shell, а также других программ.

Читайте также: