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


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)

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.


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

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.


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

9

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

import click
click.clear()

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'])


6

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


4

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


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

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

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.



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!


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)
    

1

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


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 )


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

0

Itulah cara terbaik:

>>>import os
>>>def cls(): os.system('cls')
>>>cls()

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.

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.