Ответ 1
Как вы упомянули, вы можете выполнить системный вызов:
Для Windows
>>> import os
>>> clear = lambda: os.system('cls')
>>> clear()
Для Linux лямбда становится
>>> clear = lambda: os.system('clear')
Как и большинство разработчиков Python, я обычно держу консольное окно открытым с запущенным интерпретатором Python для тестирования команд, dir()
, help() stuff
и т.д.
Как и любая консоль, через некоторое время видимое отставание прошлых команд и отпечатков становится загроможденным, и иногда возникает путаница при повторном запуске одной и той же команды несколько раз. Мне интересно, если и как очистить консоль интерпретатора Python.
Я слышал о том, как выполнять системный вызов и вызывать cls
в Windows или clear
в Linux, но я надеялся, что есть что-то, что я мог бы заставить интерпретатора сделать сам.
Примечание: я работаю в Windows, поэтому Ctrl+L
не работает.
Как вы упомянули, вы можете выполнить системный вызов:
Для Windows
>>> import os
>>> clear = lambda: os.system('cls')
>>> clear()
Для Linux лямбда становится
>>> clear = lambda: os.system('clear')
здесь что-то удобное, что немного больше кросс-платформенного
import os
def cls():
os.system('cls' if os.name=='nt' else 'clear')
# now, to clear the screen
cls()
Ну, вот быстрый хак:
>>> 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
Хотя это более старый вопрос, я думал, что внес свой вклад в то, что я считаю лучшим из других ответов, и добавьте свой собственный морщин, предложив вам вставить эти команды в файл и установить PYTHONSTARTUP чтобы указать на нее. Так как я нахожусь в Windows на данный момент, он слегка смещен таким образом, но может легко наклоняться в другом направлении.
Здесь некоторые статьи, которые я нашел, описывают, как устанавливать переменные среды в Windows:
Когда использовать sys.path.append и при изменении% PYTHONPATH% достаточно
Как управлять переменными среды в Windows XP
Настройка переменных системы и пользовательской среды
Как использовать переменные глобальной системной среды в Windows
BTW, не ставьте кавычки вокруг пути к файлу, даже если в нем есть пробелы.
Во всяком случае, здесь я беру код, чтобы добавить (или добавить к существующему) скрипт запуска 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
У вас есть несколько способов сделать это в Windows:
Press CTRL + L
import os
cls = lambda: os.system('cls')
cls()
cls = lambda: print('\n'*100)
cls()
Самый быстрый и простой способ - это Ctrl + L.
Это то же самое для OS X на терминале.
Мой способ сделать это - написать такую функцию:
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... все ОС.
Стеклоочиститель круто, хорошо, что мне не нужно набирать '()' вокруг него. Вот небольшая вариация к ней
# wiper.py
import os
class Cls(object):
def __repr__(self):
os.system('cls')
return ''
Использование довольно просто:
>>> cls = Cls()
>>> cls # this will clear console.
Вот кросс-платформенный (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()
Здесь окончательное решение, которое объединяет все остальные ответы. Особенности:
Вы можете использовать по своему усмотрению:
>>> clear()
>>> -clear
>>> clear # <- but this will only work on a shell
Вы можете импортировать его как модуль:
>>> from clear import clear
>>> -clear
Вы можете вызвать его как script:
$ python clear.py
действительно мультиплатформенный; если он не может распознать вашу систему
(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()
Я использую iTerm и родное приложение терминала для Mac OS.
Я просто нажимаю ⌘ + k
Используйте простоя. Он имеет много удобных функций. Ctrl+F6, например, сбрасывает консоль. Закрытие и открытие консоли - это хорошие способы ее очистки.
для пользователя Mac внутри консоли типа Python
import os
os.system('clear')
для окон
os.system('cls')
Я не уверен, поддерживает ли Windows "оболочка", но в Linux:
print "\033[2J"
https://en.wikipedia.org/wiki/ANSI_escape_code#CSI_codes
По-моему, вызов cls
с os
- это плохая идея вообще. Представьте, если мне удастся изменить команду cls или clear в вашей системе, и вы запустите свой script как admin или root.
Это самая простая вещь, которую вы можете сделать, и она не требует дополнительных библиотек. Он очистит экран и вернет >>>
в верхний левый угол.
print("\033[H\033[J")
Вот два хороших способа сделать это:
1.
import os
# Clear Windows command prompt.
if (os.name in ('ce', 'nt', 'dos')):
os.system('cls')
# Clear the Linux terminal.
elif ('posix' in os.name):
os.system('clear')
2.
import os
def clear():
if os.name == 'posix':
os.system('clear')
elif os.name in ('ce', 'nt', 'dos'):
os.system('cls')
clear()
Я использую MINGW/ BASH в Windows XP, SP3.
(вставьте это в .pythonstartup)
# Мой ctrl-l уже работал, но это может помочь кому-то другому
# оставляет подсказку внизу окна, хотя...
import readline
readline.parse_and_bind ('\ C-l: clear-screen')
# Это работает в BASH, потому что у меня оно тоже .inputrc, но для некоторых
# причина, по которой он падает, когда я вхожу в Python
readline.parse_and_bind ('\ C-y: kill-whole-line')
Я больше не мог печатать "exit()" и был в восторге от трюков martineau/Triptych:
Я слегка его усовершенствовал (застрял в .pythonstartup)
class exxxit():
"""Shortcut for exit() function, use 'x' now"""
quit_now = exit # original object
def __repr__(self):
self.quit_now() # call original
x = exxxit()
Py2.7.1>help(x)
Help on instance of exxxit in module __main__:
class exxxit
| Shortcut for exit() function, use 'x' now
|
| Methods defined here:
|
| __repr__(self)
|
| ----------------------------------------------------------------------
| Data and other attributes defined here:
|
| quit_now = Use exit() or Ctrl-Z plus Return to exit
Команда OS clear
в Linux и cls
в Windows выводит "магическую строку", которую вы можете просто распечатать. Чтобы получить строку, выполните команду с помощью popen и сохраните ее в переменной для последующего использования:
from os import popen
with popen('clear') as f:
clear = f.read()
print clear
На моей машине строка '\x1b[H\x1b[2J'
.
Как насчет этого для ясного
- os.system('cls')
Это примерно так же коротко, как может быть!
Я новичок в python (действительно очень новый), и в одной из книг, которые я читаю, чтобы познакомиться с языком, которым они учат, как создать эту небольшую функцию, чтобы очистить консоль видимого отставания и прошлых команд и печатает:
Открыть оболочку/Создать новый документ/Создать функцию следующим образом:
def clear():
print('\n' * 50)
Сохраните его в папке lib в каталоге python (мой C:\Python33\Lib) В следующий раз, когда вам не удалось очистить консоль, просто вызовите функцию с помощью:
clear()
что он. PS: вы можете назвать свою функцию в любом случае. Я видел, как люди, использующие "очиститель", "вытирают" и изменяют.
Я нашел самый простой способ только закрыть окно и запустить модуль / script, чтобы снова открыть оболочку.
просто используйте это.
print '\n'*1000
Я использую Spyder (Python 2.7) и для очистки консоли интерпретатора я использую
% clear
который заставляет командную строку идти в верхнюю часть, и я не буду видеть предыдущие старые команды.
или я нажимаю "вариант" в среде Console и выбираю "Перезапустить ядро", которое удаляет все.
Если это на Mac, то простой cmd + k
должен сделать свое дело.
Возможно, я опоздал на эту часть, но здесь очень простой способ сделать это
Тип:
def cls():
os.system("cls")
Итак, что бы вы хотели очистить, просто введите свой код
cls()
Лучший способ! (Кредит: https://www.youtube.com/watch?annotation_id=annotation_3770292585&feature=iv&src_vid=bguKhMnvmb8&v=LtGEp9c6Z-U)
EDIT: Я только что прочитал "окна", это для пользователей Linux, извините.
В bash:
#!/bin/bash
while [ "0" == "0" ]; do
clear
[email protected]
while [ "$input" == "" ]; do
read -p "Do you want to quit? (y/n): " -n 1 -e input
if [ "$input" == "y" ]; then
exit 1
elif [ "$input" == "n" ]; then
echo "Ok, keep working ;)"
fi
done
input=""
done
Сохраните его как "whatyouwant.sh", затем chmod + x:
./whatyouwant.sh python
или что-то другое, чем python (бездействует, что угодно). Это спросит вас, действительно ли вы хотите выйти, если не перезапустить python (или команду, которую вы дали как параметр).
Это очистит все, экран и все переменные/объект/все, что вы создали/импортировали в python.
В python просто введите exit(), когда вы хотите выйти.
Это должна быть кросс-платформа, а также использовать предпочтительный subprocess.call
вместо os.system
в соответствии с os.system
docs. Должен работать в Python >= 2.4.
import subprocess
import os
if os.name == 'nt':
def clearscreen():
subprocess.call("cls", shell=True)
return
else:
def clearscreen():
subprocess.call("clear", shell=True)
return
>>> ' '*80*25
UPDATE: 80x25 вряд ли будет размером с консольными окнами, поэтому, чтобы получить реальные размеры консоли, используйте функции pager. Python не предоставляет ничего подобного из основного распределения.
>>> from pager import getheight
>>> '\n' * getheight()
ОК, так что это гораздо менее технический ответ, но я использую плагин Python для Notepad ++, и получается, что вы можете просто очистить консоль вручную, щелкнув правой кнопкой мыши на нем и щелкнув "clear". Надеюсь, это поможет кому-то там!
Магические строки упомянуты выше - я считаю, что они взяты из базы данных terminfo:
http://www.google.com/?q=x#q=terminfo
http://www.google.com/?q=x#q=tput+command+in+unix
$tput clear | od -t x1z 0000000 1b 5b 48 1b 5b 32 4a > . [H. [2J < 0000007