Как очистить консоль переводчика? - PullRequest
277 голосов
/ 06 февраля 2009

Как и большинство разработчиков Python, я обычно держу консольное окно открытым с запущенным интерпретатором Python для проверки команд, dir() вещи, help() stuff и т. Д.

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

Я слышал о выполнении системного вызова и о вызове cls в Windows или clear в Linux, но я надеялся, что есть что-то, что я мог бы заставить самого интерпретатора сделать.

Примечание: Я работаю в Windows, поэтому Ctrl+L не работает.

Ответы [ 34 ]

372 голосов
/ 06 февраля 2009

Как вы упомянули, вы можете сделать системный вызов:

Для Windows

>>> import os
>>> clear = lambda: os.system('cls')
>>> clear()

Для Linux лямбда становится

>>> clear = lambda: os.system('clear')
172 голосов
/ 26 марта 2009

здесь что-то удобное, немного более кроссплатформенное

import os

def cls():
    os.system('cls' if os.name=='nt' else 'clear')

# now, to clear the screen
cls()
80 голосов
/ 06 февраля 2009

Ну, вот быстрый взлом:

>>> clear = "\n" * 100
>>> print clear
>>> ...do some other stuff...
>>> print clear

Или, чтобы сохранить набор текста, поместите этот файл в путь поиска Python:

# wiper.py
class Wipe(object):
    def __repr__(self):
        return '\n'*1000

wipe = Wipe()

Тогда вы можете делать это из переводчика, сколько хотите:)

>>> from wiper import wipe
>>> wipe
>>> wipe
>>> wipe
27 голосов
/ 12 октября 2010

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

Вот некоторые статьи, которые я нашел, которые описывают, как устанавливать переменные среды в Windows:
Когда использовать sys.path.append и при изменении% PYTHONPATH% достаточно
Как управлять переменными среды в Windows XP
Настройка переменных системы и среды пользователя
Как использовать переменные глобальной системной среды в Windows

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

В любом случае, вот мой взгляд на код для вставки (или добавления в существующий) сценарий запуска Python:

# ==== pythonstartup.py ====

# add something to clear the screen
class cls(object):
    def __repr__(self):
        import os
        os.system('cls' if os.name == 'nt' else 'clear')
        return ''

cls = cls()

# ==== end pythonstartup.py ====

Кстати, вы также можете использовать @ трюк Триптиха __repr__, чтобы изменить exit() на exit (и то же самое для его псевдонима quit):

class exit(object):
    exit = exit # original object
    def __repr__(self):
        self.exit() # call original
        return ''

quit = exit = exit()

Наконец, вот еще кое-что, что изменяет основной запрос интерпретатора с >>> на cwd + >>>:

class Prompt:
    def __str__(self):
        import os
        return '%s >>> ' % os.getcwd()

import sys
sys.ps1 = Prompt()
del sys
del Prompt
22 голосов
/ 20 июня 2016

У вас есть несколько способов сделать это в Windows:

1. Использование сочетания клавиш:

Press CTRL + L

2. Использование системного метода вызова:

import os
cls = lambda: os.system('cls')
cls()

3. Использование печати новой строки 100 раз:

cls = lambda: print('\n'*100)
cls()
20 голосов
/ 29 августа 2015

Самый быстрый и простой способ без сомнения - Ctrl + L .

То же самое для OS X на терминале.

14 голосов
/ 03 июня 2015

Мой способ сделать это - написать такую ​​функцию:

import os
import subprocess

def clear():
    if os.name in ('nt','dos'):
        subprocess.call("cls")
    elif os.name in ('linux','osx','posix'):
        subprocess.call("clear")
    else:
        print("\n") * 120

, затем позвоните clear(), чтобы очистить экран. это работает на Windows, OSX, Linux, BSD ... все операционные системы.

8 голосов
/ 26 июня 2018

Вот кроссплатформенный (Windows / Linux / Mac /, вероятно, другие, которые вы можете добавить в проверке if) фрагмент кода, который я сделал, объединяя информацию, найденную в этом вопросе:

import os
clear = lambda: os.system('cls' if os.name=='nt' else 'clear')
clear()

Та же идея, но с ложкой синтаксического сахара:

import subprocess   
clear = lambda: subprocess.call('cls||clear', shell=True)
clear()
8 голосов
/ 17 апреля 2009

Wiper - это круто, хорошо, что мне не нужно вводить '()' вокруг него. Вот небольшое изменение к этому

# wiper.py
import os
class Cls(object):
    def __repr__(self):
        os.system('cls')
        return ''

Использование довольно просто:

>>> cls = Cls()
>>> cls # this will clear console.
5 голосов
/ 17 июля 2012

Вот окончательное решение , которое объединяет все остальные ответы . Особенности:

  1. Вы можете скопировать-вставить код в свою оболочку или скрипт.
  2. Вы можете использовать так, как вам нравится:

    >>> clear()
    >>> -clear
    >>> clear  # <- but this will only work on a shell
    
  3. Вы можете импортировать как модуль:

    >>> from clear import clear
    >>> -clear
    
  4. Вы можете вызвать как скрипт:

    $ python clear.py
    
  5. Это действительно мультиплатформенный ; если он не может распознать вашу систему
    (ce, nt, dos или posix) это приведет к печати пустых строк.


Вы можете скачать [полный] файл здесь: https://gist.github.com/3130325
Или, если вы просто ищете код:

class clear:
 def __call__(self):
  import os
  if os.name==('ce','nt','dos'): os.system('cls')
  elif os.name=='posix': os.system('clear')
  else: print('\n'*120)
 def __neg__(self): self()
 def __repr__(self):
  self();return ''

clear=clear()
...