Bagaimana cara menghapus konsol juru bahasa?


325

Seperti kebanyakan pengembang Python, saya biasanya membuka jendela konsol dengan interpreter Python berjalan untuk menguji perintah, dir()barang help() stuff, dll.

Seperti halnya konsol mana pun, setelah beberapa saat tumpukan yang terlihat dari perintah dan cetakan sebelumnya menjadi berantakan, dan kadang membingungkan ketika menjalankan kembali perintah yang sama beberapa kali. Saya bertanya-tanya apakah, dan bagaimana, menghapus konsol interpreter Python.

Saya pernah mendengar tentang melakukan pemanggilan sistem dan memanggil clsWindows atau clearLinux, tetapi saya berharap ada sesuatu yang bisa saya perintahkan kepada penerjemah itu sendiri.

Catatan: Saya sedang menjalankan Windows, jadi Ctrl+Ltidak berfungsi.



Saya terkejut tidak ada yang menyebutkannya. Tetapi ketika Anda menggunakan Ipython shell Anda dapat melakukan Ctrl + L bahkan di windows
user93

Jawaban:


442

Seperti yang Anda sebutkan, Anda dapat melakukan panggilan sistem:

Untuk Windows

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

Untuk Linux, lambda menjadi

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

1
Jawaban ini paling dekat dengan 'roh' dari apa yang saya minta, terima kasih.
Soviut

1
+1, jawaban yang bagus. Apakah ada cara untuk mengkonsumsi nilai kembali sehingga tidak muncul? Saya mendapatkan '0' setelah menjalankan clear.
technomalogical

15
Tentukan dalam fungsi biasa bukan lambda seharusnya tidak menunjukkan '0' karena nilai kembali akan menjadi Tidak ada.
Akbar ibrahim

46
Apa yang salah dengan menggunakan def? Mengapa menggunakan a lambdasaat deflebih jelas?
S.Lott

17
@Akbaribrahim sebagai Tidak ada yang tidak akan dicetak coba ini:clear = lambda: os.system('cls') or None
enpenax

193

di sini sesuatu yang berguna yang sedikit lebih lintas platform

import os

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

# now, to clear the screen
cls()

Cara hebat untuk menyelesaikan berbagai hal, Kombinasikan ini dengan saran lambda di atas untuk menyimpan sederet kode, sangat berguna! Terima kasih! :)
Torxed

import os os.system('cls')
Do Nhu Vy

1
Variabel lingkungan JANGKA tidak diatur.
Jonathan

87

Nah, ini hack cepat:

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

Atau untuk menyimpan beberapa pengetikan, letakkan file ini di jalur pencarian python Anda:

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

wipe = Wipe()

Maka Anda dapat melakukan ini dari penerjemah semau Anda :)

>>> from wiper import wipe
>>> wipe
>>> wipe
>>> wipe

12
Haha, itu lucu sekali. Bukan apa yang saya cari, tapi usaha yang bagus.
Soviut

4
@Triptych: c = "\ n" * 100 bermanfaat, +1 untuk itu. Sebuah komentar kecil membersihkan dan membawa ke bagian bawah shell, saya lebih suka memulai dari atas shell.
pythonbeginer

1
Atau, jika emulator terminal Anda menginterpretasikan ANSI, lebih baik lakukan:"\x1B[H\x1B[J"
Alba Mendez

8
Meskipun banyak orang tertawa, mencetak banyak baris baru adalah proses eksternal cleardan clsapa yang dilakukan. Ini adalah cara untuk melakukannya. (hanya cetak, atau fungsi dengan panggilan cetak, tidak mengasosiasikan ke string "jelas", tentu saja)
jsbueno

4
@ jsbueno tidak itu tidak. Yah mungkin di windows (meskipun saya ragu, ia memiliki API untuk menghapus konsol). Pada semua sistem lain, clearmengeluarkan arahan yang membersihkan layar. Tanpa merusak buffer scrollback. Pada sistem saya, itu output urutan kontrol ini: \33[3J\33[H\33[2J. Yaitu: [erase scrollback] [reset cursor position] [erase screen]. The [erase scrollback]dapat dihilangkan dengan menggunakan clear -x.
spektra

28

Meskipun ini adalah pertanyaan yang lebih lama, saya pikir saya akan menyumbangkan sesuatu yang meringkas apa yang saya anggap terbaik dari jawaban lain dan menambahkan kerutan saya sendiri dengan menyarankan agar Anda memasukkan perintah-perintah ini ke dalam file dan mengatur PYTHONSTARTUP Anda variabel lingkungan untuk menunjuk ke sana. Karena saya menggunakan Windows saat ini, itu sedikit bias seperti itu, tetapi dapat dengan mudah miring ke arah lain.

Berikut ini beberapa artikel yang saya temukan yang menjelaskan cara mengatur variabel lingkungan di Windows:
    Kapan menggunakan sys.path.append dan ketika memodifikasi% PYTHONPATH% sudah cukup
    Bagaimana Mengelola Variabel Lingkungan di Windows XP
    Sistem Konfigurasi dan Variabel Lingkungan Pengguna
    Cara Menggunakan Sistem Global Variabel Lingkungan di Windows

BTW, jangan beri tanda kutip di sekitar path ke file bahkan jika memiliki spasi di dalamnya.

Bagaimanapun, inilah pendapat saya tentang kode untuk dimasukkan (atau tambahkan ke skrip startup Python Anda yang sudah ada:

# ==== 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 ====

BTW, Anda juga dapat menggunakan trik @ Triptych __repr__ untuk berubah exit()menjadi adil exit(dan juga alias quit):

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

quit = exit = exit()

Terakhir, inilah hal lain yang mengubah prompt juru bahasa utama dari >>>ke cwd + >>>:

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

import sys
sys.ps1 = Prompt()
del sys
del Prompt

Ini mungkin jawaban terbaik - kombinasi teknik dari jawaban lain. PYTHONSTARTUP + repr + os.system ('cls'). Sangat bagus.
Triptych

@ Triptych: Satu efek samping yang menarik dari penggunaan __repr__dan / atau __str__cara ini adalah bahwa jika Anda mengetik >>> vars()di konsol juru bahasa, ia akan menjalankan semua perintah yang ditentukan. Di sistem saya, misalnya, ia membersihkan layar dan kemudian keluar dari konsol. Butuh waktu beberapa saat untuk mencari tahu apa yang sedang terjadi ....
martineau

menarik. Saya melihat masalah ini juga berlaku untuk locals()dan globals(). Dekorator sederhana di sekitar fungsi-fungsi ini yang menghapus nama dan menugaskannya kembali setelah pemanggilan fungsi adalah solusi yang mungkin ...
Triptych

@ Triptych: Ide dekorator sepertinya tidak berhasil, setidaknya dengan usaha saya sendiri. Datang dengan alternatif yang layak terbukti sulit mengejutkan.
martineau

Saya punya solusi kandidat yang secara sederhana membuat hasil panggilan vars () global () dan penduduk lokal () sementara: gist.github.com/4172781
Triptych

28

Anda memiliki beberapa cara melakukannya di Windows:

1. Menggunakan pintasan Keyboard:

Press CTRL + L

2. Menggunakan metode pemanggilan sistem:

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

3. Menggunakan pencetakan baris baru 100 kali:

cls = lambda: print('\n'*100)
cls()

5
Semua cara ini sangat ... naff. clshanya akan bekerja di windows dan membuat program Anda sulit menjadi lintas platform, mencetak 100 newlineshanya ... baru? Dan pintasan keyboard tidak digunakan dalam program.
Luke

22

Cara tercepat dan termudah tanpa ragu adalah Ctrl+ L.

Ini sama untuk OS X di terminal.


3
Saya mencoba solusi ini menggunakan huruf besar atau kecil "L" dengan tombol ctrl pada windows 8.1. Itu tidak bekerja untuk saya. Saya hanya membuka dan menutup jendela shell untuk menghapusnya.
Chris22

2
Pada OS X, Ctrl + L akan mengisi terminal hingga layar jelas. Anda masih dapat menggulir ke atas untuk melihat riwayat. Gunakan Cmd + K untuk menghapus tampilan dan riwayat pencetakan. Daftar tombol cepat terminal OS X yang lebih lengkap
Andrew Franklin

2
Bekerja dengan baik untuk saya di Ubuntu Desktop 16
Nam G VU

15

Cara saya melakukan ini adalah dengan menulis fungsi seperti ini:

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

lalu panggil clear()untuk menghapus layar. ini berfungsi di windows, osx, linux, bsd ... semua OS.


Anda mungkin bermaksud os.name in ('linux','osx'), dan mungkin juga ingin menambahkan 'posix'juga.
rsanden

@rsanden 'linux' dan 'osx' mencakup hampir semua orang OS SEBENARNYA digunakan.
MartinUbuntu

Saya menjalankan Ubuntu 15.04, dan os.name == 'posix'di kedua python 2.7.9 dan 3.4.3
rsanden

@rsanden menambahkan posix.
MartinUbuntu

9

Berikut ini adalah lintas platform (Windows / Linux / Mac / Mungkin lainnya yang dapat Anda tambahkan dalam cuplikan if) versi yang saya buat menggabungkan informasi yang ditemukan dalam pertanyaan ini:

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

Gagasan yang sama tetapi dengan sendok gula sintaksis:

import subprocess   
clear = lambda: subprocess.call('cls||clear', shell=True)
clear()

8

Wiper itu keren, hal baiknya adalah saya tidak perlu mengetikkan '()' di sekitarnya. Berikut sedikit variasi untuk itu

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

Penggunaannya cukup sederhana:

>>> cls = Cls()
>>> cls # this will clear console.

2
Saya akan menyebutkannya class cls.
martineau

1
Saya akan menyebutkan contoh class Clsuntuk menjadi cls. cls = Cls()
Amol

Kecuali itu mencemari namespace awal dengan dua hal, bukannya satu ... dua kali lipat.
martineau

@ Amol Saya telah menggunakan teknik Anda dan orang lain dalam solusi saya . Anda bisa melakukannya class clslalu cls=cls().
Alba Mendez

8

Ini adalah hal paling sederhana yang dapat Anda lakukan dan tidak memerlukan perpustakaan tambahan. Ini akan menghapus layar dan kembali >>>ke sudut kiri atas.

print("\033[H\033[J")

Ini memiliki keuntungan bahwa ia juga berfungsi di Spyder.
Graham G

7

untuk pengguna mac di dalam jenis konsol python

import os
os.system('clear')

untuk windows

os.system('cls')

5

Inilah solusi definitif yang menggabungkan semua jawaban lainnya . Fitur:

  1. Anda dapat menyalin dan menempelkan kode ke shell atau skrip Anda.
  2. Anda dapat menggunakannya sesuka Anda:

    >>> clear()
    >>> -clear
    >>> clear  # <- but this will only work on a shell
  3. Anda dapat mengimpornya sebagai modul:

    >>> from clear import clear
    >>> -clear
  4. Anda dapat menyebutnya sebagai skrip:

    $ python clear.py
  5. Ini benar - benar multi platform ; jika tidak dapat mengenali sistem anda
    ( ce, nt, dosatau posix) itu akan jatuh kembali ke pencetakan baris kosong.


Anda dapat mengunduh file [lengkap] di sini: https://gist.github.com/3130325
Atau jika Anda hanya mencari kode:

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()

5

Saya tidak yakin apakah "shell" Windows mendukung ini, tetapi di Linux:

print "\033[2J"

https://en.wikipedia.org/wiki/ANSI_escape_code#CSI_codes

Menurut pendapat saya menelepon clsdengan osadalah ide yang buruk pada umumnya. Bayangkan jika saya berhasil mengubah perintah cls atau clear pada sistem Anda, dan Anda menjalankan skrip Anda sebagai admin atau root.


Saya setuju cls tidak ideal dalam kasus ini, dan urutan pelarian ANSI lebih baik. Secara khusus menggunakan os untuk menjalankan proses baru adalah operasi yang cukup pricy, dibandingkan dengan mendorong beberapa byte ke stdout.
silviot


4

Gunakan idle. Ini memiliki banyak fitur berguna. Ctrl+F6, misalnya, mengatur ulang konsol. Menutup dan membuka konsol adalah cara yang baik untuk menghapusnya.


bagaimana Anda melakukannya saat idle? Tutup dan buka kembali?
Andrea Ambu

5
Tidak, F6tidak mengatur ulang konsol Idle, namun CTRL+F6demikian. Sayangnya ini tidak menghapus layar. Doh! (Python Win32 Idle versi 2.6.2, 2.7.1, 3.2).
ridgerunner

2

Saya menggunakan MINGW / BASH pada Windows XP, SP3.

(letakkan ini di .pythonstartup)
# Ctrl-l saya sudah agak berfungsi, tetapi ini mungkin membantu orang lain
# meninggalkan prompt di bagian bawah jendela ...
impor readline
readline.parse_and_bind ('\ Cl: clear-screen')

# Ini berfungsi di BASH karena saya memilikinya di .inputrc juga, tetapi untuk beberapa
alasan # dibatalkan ketika saya masuk ke Python
readline.parse_and_bind ('\ Cy: kill-whole-line')


Saya tidak tahan lagi mengetik 'exit ()' dan senang dengan trik martineau / Triptych:

Saya sedikit merawatnya (terjebak di .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

2

Perintah OS cleardi Linux dan clsWindows menghasilkan "string ajaib" yang hanya dapat Anda cetak. Untuk mendapatkan string, jalankan perintah dengan popen dan simpan dalam variabel untuk digunakan nanti:

from os import popen
with popen('clear') as f:
    clear = f.read()

print clear

Di mesin saya, stringnya adalah '\x1b[H\x1b[2J'.


1
1) Senar ajaib itu adalah urutan ANSI . \x1b[Hberarti "pindahkan kursor ke sudut kiri atas", \x1b[2Jberarti "hapus semua layar". 2) Di windows, ANSI tidak dikenali jadi mungkin tidak ada string ajaib.
Alba Mendez

1
Keren! Juga, untuk cetak python3 ('\ x1b [H \ x1b [2J', end = ''); dapat membantu menghindari baris baru di depan.
DenMark

String ajaib bekerja pada konsol Microsoft Windows 10 dengan Python 3.6 untuk saya. Saya plussed untuk urutan string bukan penggunaan dengan terbuka.
DevPlayer

2

Berikut adalah dua cara yang baik untuk melakukan itu:

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()

Jika os.name tidak termasuk di sini, mengapa tidak kembali ke mencetak baris kosong?
Alba Mendez

Jika itu Jython maka saya ingin Anda tahu bahwa os.name = 'java'
iChux

Terlihat bagus, apakah ini berarti program bisa menjadi lintas platform?
Luke

2

Jika ada di mac, maka yang sederhana cmd + kharus melakukan trik.


2

Cara termudah adalah dengan menggunakan modul os

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

1

Ini harus lintas platform, dan juga menggunakan disukai subprocess.callbukan os.systemsesuai dengan os.systemdocs . Harus bekerja dengan 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

1

Bagaimana kalau ini jelas

- os.system('cls')

Itu hampir sesingkat mungkin!


ya, tetapi tidak multiplatform dan Anda harus mengetik ulang setiap kali Anda ingin menghapus layar.
Alba Mendez

1

Saya baru mengenal python (benar-benar benar-benar baru) dan di salah satu buku yang saya baca untuk berkenalan dengan bahasa yang mereka ajarkan bagaimana membuat fungsi kecil ini untuk menghapus konsol backlog yang terlihat dan perintah-perintah sebelumnya dan cetakan:

Buka shell / Buat dokumen baru / Buat fungsi sebagai berikut:

def clear():
    print('\n' * 50)

Simpan di dalam folder lib di direktori python Anda (milik saya adalah C: \ Python33 \ Lib) Lain kali Anda perlu menghapus konsol Anda, cukup panggil fungsi dengan:

clear()

itu dia. PS: Anda bisa menyebutkan fungsi apa saja yang Anda inginkan. Saya melihat orang menggunakan "penghapus" "penghapusan" dan variasi.


1

Saya menggunakan Spyder (Python 2.7) dan untuk membersihkan konsol juru bahasa saya gunakan juga

%bersih

yang memaksa baris perintah untuk pergi ke atas dan saya tidak akan melihat perintah lama sebelumnya.

atau saya klik "opsi" pada lingkungan Konsol dan pilih "Restart kernel" yang menghapus semuanya.



1

Cukup masukkan

import os
os.system('cls') # Windows
os.system('clear') # Linux, Unix, Mac OS X

1

Jika Anda tidak perlu melakukannya melalui kode, cukup tekan CTRL + L


Ya ini berfungsi, tetapi bagaimana jika Anda ingin membuat perintah di file python Anda yang menghapus konsol, Anda tidak akan hanya membuat pengguna mengetik sesuatu kemudian memberitahu mereka untuk menghapusnya sendiri. Anda akan menghapus konsol melalui kode.
madladzen

1

Arch Linux (diuji xfce4-terminaldengan Python 3):

# Clear or wipe console (terminal):
# Use: clear() or wipe()

import os

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

def wipe():
    os.system("clear && printf '\e[3J'")

... ditambahkan ke ~/.pythonrc

  • clear() membersihkan layar
  • wipe() menyeka seluruh buffer terminal

0

EDIT: Saya baru saja membaca "windows", ini untuk pengguna linux, maaf.


Dalam bash:

#!/bin/bash

while [ "0" == "0" ]; do
    clear
    $@
    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

Simpan sebagai "whatyouwant.sh", chmod + x lalu jalankan:

./whatyouwant.sh python

atau sesuatu selain python (menganggur, apa pun). Ini akan menanyakan Anda apakah Anda benar-benar ingin keluar, jika tidak jalankan kembali python (atau perintah yang Anda berikan sebagai parameter).

Ini akan menghapus semua, layar dan semua variabel / objek / apa pun yang Anda buat / impor dengan python.

Dalam python cukup ketik keluar () ketika Anda ingin keluar.


0

OK, jadi ini adalah jawaban yang kurang teknis, tapi saya menggunakan plugin Python untuk Notepad ++ dan ternyata Anda bisa menghapus konsol secara manual dengan mengklik kanan dan mengklik "jelas". Semoga ini bisa membantu seseorang di luar sana!

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.