Bersihkan layar di shell

90

Hanya pertanyaan singkat:
Bagaimana Anda membersihkan layar di shell? Saya telah melihat cara seperti:

import os
os.system('cls')

Ini hanya membuka windows cmd, membersihkan layar dan menutup tetapi saya ingin jendela shell dibersihkan
(PS: Saya tidak tahu ini membantu, tetapi saya menggunakan Python versi 3.3.2)
Terima kasih :)

astaga
sumber
kemungkinan duplikat Bagaimana menghapus konsol interpreter python?
Cees Timmerman

Jawaban:

57

Untuk macOS / OS X, Anda dapat menggunakan modul subproses dan memanggil 'cls' dari shell:

import subprocess as sp
sp.call('cls', shell=True)

Untuk mencegah '0' muncul di atas jendela, ganti baris ke-2 dengan:

tmp = sp.call('cls', shell=True)

Untuk Linux, Anda harus mengganti clsperintah denganclear

tmp = sp.call('clear', shell=True)
GalHai
sumber
3
Saya menggunakan Mac OS X, dan saya mencoba ini import subprocess as sp sp.call('clear',shell=True)yang berfungsi, kecuali ada 0di bagian atas jendela terminal.
Daniel Dropik
0 adalah nilai kembali dari panggilan perintah 'cls' dari shell. saya mengedit jawaban untuk menyingkirkan itu juga, dengan hanya menyimpan nilai itu dalam variabel.
GalHai
9
Coba inictrl+L
Sai Ram
Itu berfungsi pada baris perintah. Pertanyaannya adalah bagaimana melakukannya dengan Python.
Edward Falk
Terima kasih atas solusinya, saya kehilangan shell = True. untuk mencegah 0 muncul, Anda juga dapat menambahkan titik koma di akhir pernyataan. sp.call('cls', shell=True);
Waylon Walker
84

Bagaimana dengan pintasan CTRL+ L?

Ini berfungsi untuk semua shell misalnya Python, Bash, MySQL, MATLAB, dll.

Shafiq
sumber
6
Sayangnya tidak berfungsi pada Windows termasuk cmd baru di Windows10
9a3eedi
Saat menggunakan subproses untuk otomatisasi, pendekatan ini tidak berfungsi.
mountainLion
64
import os

os.system('cls')  # For Windows
os.system('clear')  # For Linux/OS X
Rajan Mandanka
sumber
Juga, os.system('clear')untuk terminal Mac OS X (dikonfirmasi untuk bekerja dengan shell default bash,, dan juga untuk csh).
jvriesem
Anda juga dapat menentukan fungsi untuk menjalankan ini, seperti: def cls (): os.system ('cls') (tekan enter dua kali). Kemudian Anda cukup mengetik cls () untuk membersihkan layar.
Pertanyaannya adalah tentang bagaimana melakukan ini di shell.
Kyle Delaney
1
@KDelan sementara tidak efisien, ia bekerja di shell. Juga banyak orang menganggap ini berguna karena itulah yang mereka cari.
Gaspa79
12

Jenis hal yang Anda cari dapat ditemukan di modul kutukan.

yaitu

import curses  # Get the module
stdscr = curses.initscr()  # initialise it
stdscr.clear()  # Clear the screen

Catatan penting

Hal penting yang harus diingat adalah sebelum keluar, Anda perlu mengatur ulang terminal ke mode normal, ini dapat dilakukan dengan baris berikut:

curses.nocbreak()
stdscr.keypad(0)
curses.echo()
curses.endwin()

Jika tidak, Anda akan mendapatkan semua jenis perilaku aneh. Untuk memastikan bahwa ini selalu dilakukan, saya sarankan menggunakan modul atexit, seperti:

import atexit

@atexit.register
def goodbye():
    """ Reset terminal from curses mode on exit """
    curses.nocbreak()
    if stdscr:
        stdscr.keypad(0)
    curses.echo()
    curses.endwin()

Mungkin akan melakukannya dengan baik.

Steve Barnes
sumber
Bisakah Anda lebih spesifik?
josh
1
Saya menjalankan Mac OS X 10.7.5 dan iTerm 2 untuk terminal saya. Menggunakan Python2.7, stdscr = curses.initscr()berfungsi untuk membersihkan layar, dan stdscr.clear()tidak melakukan apa pun. Menggunakan Python3.4, stdscr = curses.initscr()tidak membersihkan layar, tetapi menghilangkan kemampuan terminal untuk memproses baris baru. Ketika saya menekan enter berulang kali, ini memberikan yang berikut: >>> >>> >>> >>> dan seterusnya. Saya masih bisa mengetik perintah, tetapi perintah itu tidak muncul. Juga, perilaku ini tetap ada bahkan ketika saya melakukan exit()Python. HINDARI PENGGUNAAN!
jvriesem
@jvriesem modul kutukan telah digunakan untuk waktu yang lama dan telah digunakan oleh banyak orang - Saya sarankan Anda melihat apakah Anda dapat meniru perilaku dalam waktu singkat, (20 baris atau lebih), contoh dan salah satu pos itu sebagai pertanyaan stack overflow atau di milis pengembang.
Steve Barnes
Ide bagus - itu respons yang lebih baik daripada "HINDARI PENGGUNAAN!" pernyataan. Dua baris pertama dari jawaban ini adalah dua baris yang mereplikasi masalah bagi saya. Tahukah Anda jika ada alasan mengapa cursesmodul mungkin mengalami masalah kompatibilitas (Windows vs. Mac vs. Linux)? Saya dapat mengonfirmasi bahwa masalah ini terjadi pada dua terminal Mac yang berbeda, setidaknya. Perilaku tersebut tetap ada di BASH tetapi tidak di CSH. Hmm .... Apakah menurut Anda saya harus menghubungi pengembang kutukan, pengembang shell, atau hanya bertanya pada komunitas SO? Terima kasih lagi!
jvriesem
@jvriesem - Saya telah memperbarui jawaban saya untuk menyertakan cara menyetel ulang terminal Anda ke mode standar setelah Anda selesai, termasuk saat keluar.
Steve Barnes
12

Berikut beberapa opsi yang dapat Anda gunakan di Windows

Pilihan pertama:

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

>>> cls()

Pilihan kedua:

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

>>> cls()

Opsi ketiga jika Anda berada di jendela REPL Python:

Ctrl+L
Vlad Bezden
sumber
9

Selain menjadi pustaka CLI yang serba bisa, clickjuga menyediakan fungsi platform-agnostik clear():

import click
click.clear()
Martin Valgur
sumber
7

Fungsi ini berfungsi di semua OS (Unix, Linux, macOS, dan Windows)
Python 2 dan Python 3

import platform    # For getting the operating system name
import subprocess  # For executing a shell command

def clear_screen():
    """
    Clears the terminal screen.
    """

    # Clear command as function of OS
    command = "cls" if platform.system().lower()=="windows" else "clear"

    # Action
    return subprocess.call(command) == 0

Di windows perintahnya adalah cls, dalam sistem mirip unix perintahnya adalah clear.
platform.system()mengembalikan nama platform. Ex. 'Darwin'untuk macOS.
subprocess.call()melakukan panggilan sistem. Ex.subprocess.call(['ls','-l'])

ePi272314
sumber
6

Cara yang lebih mudah untuk membersihkan layar saat menggunakan python adalah dengan menggunakan Ctrl+ Lmeskipun itu berfungsi untuk shell serta program lain.

BioinfoNerd
sumber
4

Jika Anda menggunakan terminal linux untuk mengakses python, maka cntrl + l adalah solusi terbaik untuk membersihkan layar

HMS
sumber
4

Saya menggunakan kelas yang hanya menggunakan salah satu metode di atas di belakang layar ... Saya perhatikan ini berfungsi di Windows dan Linux ... Saya suka menggunakannya karena lebih mudah untuk mengetikkan clear () daripada sistem ('clear' ) atau os.system ('clear')

pip3 install clear-screen

from clear_screen import clear

dan kemudian ketika Anda ingin membersihkan cangkang:

clear()

sumber
3

menggunakan windows 10 dan pyhton3.5 saya telah menguji banyak kode dan tidak ada yang membantu saya lebih dari ini:

Pertama tentukan fungsi sederhana, fungsi ini akan mencetak 50 baris baru; (angka 50 akan tergantung pada berapa banyak baris yang dapat Anda lihat di layar Anda, sehingga Anda dapat mengubah nomor ini)

def cls(): print ("\n" * 50)

kemudian panggil saja sebanyak yang Anda inginkan atau butuhkan

cls()
sami.almasagedi
sumber
Tak satu pun dari ide perintah siap pakai yang berhasil untuk saya. membuat ini, tentu saja fungsi saya sendiri.
DashingQuark
2

Command+K berfungsi dengan baik di OSX untuk membersihkan layar.

Shift+Command+K untuk hanya menghapus buffer scrollback.

Ayer
sumber
1
import curses
stdscr = curses.initscr()
stdscr.clear()
sl1ng5h0t
sumber
1

Subproses memungkinkan Anda memanggil "cls" untuk Shell.

import subprocess
cls = subprocess.call('cls',shell=True)

Itu sesederhana yang saya bisa. Semoga berhasil untuk Anda!

Seth Connell
sumber
1
  1. Anda dapat Menggunakan Jendela Atau Linux Os

    import os
    os.system('cls')
    os.system('clear')
    
  2. Anda dapat menggunakan modul subproses

    import subprocess as sp
    x=sp.call('cls',shell=True)
    
Rohit Parghi
sumber
1

os.system('cls')berfungsi dengan baik saat saya membukanya. Ini terbuka dengan gaya cmd.

Phich
sumber
1

Daripada mengimpor semua kutukan atau membayar hanya untuk mendapatkan satu karakter kontrol, Anda cukup menggunakan (di Linux / macOS):

print(chr(27) + "[2J")

(Sumber: Hapus terminal dengan Python )

CharlesL
sumber
0

Berikut cara membuat perintah clsatau Anda sendiri clearyang akan berfungsi tanpa memanggil fungsi apa pun secara eksplisit!

Kami akan memanfaatkan fakta bahwa konsol python memanggil repr()untuk menampilkan objek di layar. Ini sangat berguna jika Anda memiliki shell python khusus Anda sendiri (dengan -iopsi misalnya) dan Anda memiliki skrip pra-pemuatan untuk itu. Inilah yang Anda butuhkan:

import os
class ScreenCleaner:
    def __repr__(self):
        os.system('cls')  # This actually clears the screen
        return ''  # Because that's what repr() likes

cls = ScreenCleaner()

Gunakan clearalih-alih clsjika Anda menggunakan linux (dalam osperintah dan nama variabel)!

Sekarang jika Anda hanya menulis clsatau cleardi konsol - itu akan menghapusnya! Bahkan tidak cls()atau clear()- hanya variabel mentah. Ini karena python akan memanggil repr(cls)untuk mencetaknya, yang pada gilirannya akan memicu __repr__fungsi kita .

Mari kita uji:

>>> df;sag
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'df' is not defined
>>> sglknas
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'sglknas' is not defined
>>> lksnldn
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'lksnldn' is not defined
>>> cls

Dan layarnya jernih!

Untuk memperjelas - kode di atas perlu diimpor di konsol seperti ini

from somefile import cls

Atau pra muat langsung dengan sesuatu seperti:

python -i my_pre_loaded_classes.py
Ofer Sadan
sumber
0

Itulah cara terbaik:

>>>import os
>>>def cls(): os.system('cls')
>>>cls()
Fahimbd_14
sumber
3
Saya tidak benar-benar melihat bagaimana jawaban Anda meningkat pada jawaban mana pun yang sudah diberikan pada tahun-tahun sebelumnya.
David Buck
Mereka yang membutuhkannya akan melihatnya. Saya tidak perlu perbaikan bro. makasih bro.
Fahimbd_14
2
dia tidak sedang berbicara tentang meningkatkan jawaban Anda. Dia menyatakan bahwa jawaban Anda tidak berguna, karena orang lain telah memberikan yang sama.
OmikronWeapon
0

Untuk Python IDLE 3.8.1 Anda dapat memulai ulang Shell

CTRL + F6

Pada menu Klik pada menu Shell. Kemudian klik opsi Restart Shell.

Peter Cockram
sumber