Kabukta ekranı temizle


90

Hızlı bir soru:
Kabuktaki ekranı nasıl temizlersiniz? Gibi yollar gördüm:

import os
os.system('cls')

Bu sadece windows cmd'yi açar, ekranı temizler ve kapatır ancak kabuk penceresinin temizlenmesini istiyorum
(Not: Bunun yardımcı olduğunu bilmiyorum, ancak Python 3.3.2 sürümünü kullanıyorum)
Teşekkürler :)


Yanıtlar:


57

MacOS / OS X için, alt işlem modülünü kullanabilir ve kabuktan 'cls'yi çağırabilirsiniz:

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

Pencerenin üstünde '0' görünmesini önlemek için 2. satırı şu şekilde değiştirin:

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

Linux için, clskomutu şununla değiştirmelisiniz:clear

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

3
Mac OS X kullanıyorum ve terminal penceresinin üstünde import subprocess as sp sp.call('clear',shell=True)bir tane olması dışında bunu denedim 0.
Daniel Dropik

0, kabuktan gelen 'cls' komut çağrısının dönüş değeridir. Ben de bu değeri bir değişkende saklayarak bundan kurtulmak için cevabı düzenledim.
GalHai

9
Deneyinctrl+L
Sai Ram

Bu komut satırında çalışır. Soru, Python'da nasıl yapılacağıydı.
Edward Falk

Çözüm için teşekkürler, kabuk = True eksikti. 0'ın gösterilmesini önlemek için, ifadenin sonuna bir noktalı virgül de ekleyebilirsiniz. sp.call('cls', shell=True);
Waylon Walker

85

Peki ya kısayol CTRL+ L?

Python, Bash, MySQL, MATLAB vb. Gibi tüm kabuklar için çalışır.


8
Ne yazık ki
Windows10

Otomasyon için alt işlem kullanılırken bu yaklaşım işe yaramaz.
mountainLion

64
import os

os.system('cls')  # For Windows
os.system('clear')  # For Linux/OS X

Ayrıca, os.system('clear')Mac OS X terminalleri için (varsayılan kabukla bashve ayrıca için çalıştığı onaylandı csh).
jvriesem

Bunu çalıştırmak için bir işlev de tanımlayabilirsiniz, örneğin: def cls (): os.system ('cls') (iki kez enter tuşuna basın). Ardından ekranı temizlemek için cls () yazabilirsiniz.

Soru, bunun kabukta nasıl yapılacağıyla ilgiliydi.
Kyle Delaney

1
@KyleDelaney verimsizken, kabukta çalışıyor. Ayrıca birçok insan bunu yararlı buldu çünkü aradıkları şey buydu.
Gaspa79

12

Aradığınız türden bir şey curses modülünde bulunmaktır.

yani

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

Önemli Not

Unutulmaması gereken önemli şey, herhangi bir çıkıştan önce terminali normal moda sıfırlamanız gerektiğidir, bu aşağıdaki satırlarla yapılabilir:

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

Eğer yapmazsan, her türlü garip davranışa sahip olacaksın. Bunun her zaman yapıldığından emin olmak için atexit modülünü kullanmanızı öneririm, örneğin:

import atexit

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

Muhtemelen iyi yapacak.


Daha spesifik olabilir misin?
josh

1
Terminalim için Mac OS X 10.7.5 ve iTerm 2 çalıştırıyorum. Python2.7 kullanıldığında, stdscr = curses.initscr()ekranı temizlemeye çalışır ve stdscr.clear()hiçbir şey yapmaz. Python3.4 kullanıldığında stdscr = curses.initscr()ekranı temizler, ancak terminalin yeni satırları işleme yeteneğini ortadan kaldırır. Enter tuşuna art arda bastığımda, aşağıdakileri veriyor: >>> >>> >>> >>> vb. Hala komut yazabilirim, ancak görünmüyorlar. Ayrıca, bu davranış ben exit()Python'da bile devam ediyor . KULLANIMDAN KAÇININ!
jvriesem

@jvriesem curses modülü uzun süredir kullanılıyor ve birçok kişi tarafından kullanılıyor - davranışı kısa (20 satır veya benzeri), örnek ve her iki gönderide de kopyalayıp kopyalayamayacağınızı görmenizi öneririm bir yığın taşma sorusu olarak veya geliştirici posta listesinde.
Steve Barnes

İyi fikir - bu benim "KULLANIMDAN KAÇININ!" Beyan. Bu cevabın ilk iki satırı, benim için problemi taklit eden iki satırdı. cursesModülün uyumluluk sorunları yaşaması için herhangi bir neden olup olmadığını biliyor musunuz (Windows, Mac ve Linux)? Bu sorunun en azından iki farklı Mac terminalinde olduğunu doğrulayabilirim. Davranış BASH'da devam ediyor ancak CSH'de değil. Hmm .... Curses geliştiricisi, kabuk geliştiricisi ile iletişime geçmeli miyim yoksa sadece SO topluluğuna sormalı mıyım? Tekrar teşekkürler!
jvriesem

@jvriesem - Herhangi bir çıkış da dahil, bitirdiğinizde terminalinizi standart moda nasıl sıfırlayacağınızı dahil etmek için cevabımı güncelledim.
Steve Barnes

12

İşte Windows'ta kullanabileceğiniz bazı seçenekler

İlk seçenek:

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

>>> cls()

İkinci seçenek:

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

>>> cls()

Python REPL penceresindeyseniz üçüncü seçenek:

Ctrl+L

9

Her yönüyle harika bir CLI kitaplığı olmanın yanı sıra, clickplatformdan bağımsız bir clear()işlev de sağlar :

import click
click.clear()

7

Bu işlev herhangi bir işletim sisteminde (Unix, Linux, macOS ve Windows)
Python 2 ve Python 3'te çalışır

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

Windows'ta komut, clsunix benzeri sistemlerde komuttur clear.
platform.system()platform adını döndürür. Örn. 'Darwin'macOS için.
subprocess.call()bir sistem çağrısı gerçekleştirir. Örn.subprocess.call(['ls','-l'])


6

Python'dayken bir ekranı temizlemenin daha kolay bir yolu, Ctrl+ kullanmaktır, Lancak hem kabuk hem de diğer programlar için çalışır.


4

Python'a erişmek için linux terminali kullanıyorsanız, ekranı temizlemek için cntrl + l en iyi çözümdür


4

Sahne arkasında yukarıdaki yöntemlerden birini kullanan bir sınıf kullanıyorum ... Windows ve Linux'ta çalıştığını fark ettim ... Yine de kullanmayı seviyorum çünkü system ('clear') yerine clear () yazmak daha kolay ) veya os.system ('temizle')

pip3 install clear-screen

from clear_screen import clear

ve sonra kabuğu temizlemek istediğinizde:

clear()

3

Windows 10 ve pyhton3.5 kullanarak birçok kodu test ettim ve hiçbir şey bana bundan daha fazla yardımcı olmadı:

Önce basit bir işlev tanımlayın, bu işlev 50 yeni satır yazdıracaktır; (50 sayısı ekranınızda kaç satır görebileceğinize bağlı olacaktır, böylece bu sayıyı değiştirebilirsiniz)

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

o zaman onu istediğin veya ihtiyacın olduğu kadar ara

cls()

Hazır inşa edilmiş komut fikirlerinden hiçbiri benim için işe yaramadı. bunu yaratırken, tabii ki kendi işlevim yaptı.
DashingQuark

2

Command+K OSX'te ekranı temizlemek için iyi çalışıyor.

Shift+Command+K yalnızca geri kaydırma arabelleğini temizlemek için.



1

Alt süreç, Shell için "cls" çağırmanıza izin verir.

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

Yapabildiğim kadar basit. Umarım sizin için çalışır!


1
  1. Pencere Veya Linux Os Kullanabilirsiniz

    import os
    os.system('cls')
    os.system('clear')
    
  2. alt işlem modülünü kullanabilirsiniz

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

1

os.system('cls')onları açtığımda iyi çalışıyor. Cmd tarzında açılır.


1

Tüm curses'leri içe aktarmak veya sadece bir kontrol karakteri elde etmek için dışarı atmak yerine, şunu kullanabilirsiniz (Linux / macOS'ta):

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

(Kaynak: Python'da terminali temizle )


0

İşte kendi başınıza nasıl yapacağınız clsveyaclearAçıkça herhangi bir işlevi çağırmadan çalışacak komutunuzu !

Python konsolunun repr()ekrandaki nesneleri görüntülemeye çağırdığı gerçeğinden yararlanacağız . Bu, özellikle kendi özelleştirilmiş python kabuğunuz varsa ( -iörneğin seçenekle) ve bunun için bir ön yükleme komut dosyanız varsa yararlıdır . İhtiyacın olan şey bu:

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

cls = ScreenCleaner()

Linux'taysanız clearbunun yerine kullanın cls(hem oskomutta hem de değişken adında)!

Şimdi sadece yazarsanız clsveya clearkonsolda - bu silecektir! Eşit değil cls()veya clear()- sadece ham değişken. Bunun nedeni, python'un repr(cls)onu yazdırmak için çağırması ve dolayısıyla __repr__işlevimizi tetiklemesidir .

Hadi deneyelim:

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

Ve ekran net!

Açıklığa kavuşturmak için - yukarıdaki kodun konsola bu şekilde içe aktarılması gerekir

from somefile import cls

Veya doğrudan aşağıdaki gibi bir şeyle önceden yükleyin:

python -i my_pre_loaded_classes.py

0

En iyi yol bu:

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

3
Cevabınızın, önceki yıllarda verilen cevapların hiçbirinde nasıl geliştiğini gerçekten anlamıyorum.
David Buck

İhtiyacı olanlar görecek. İyileştirmeye ihtiyacım yok kardeşim. sağ ol, kanka.
Fahimbd_14

2
cevabınızı iyileştirmekten bahsetmiyordu. Cevabınızın işe yaramadığını çünkü bir başkası da aynı cevabı vermiş.
OmikronWeapon

0

Python IDLE 3.8.1 için Kabuğu yeniden başlatabilirsiniz

CTRL + F6

Menüde Kabuk menüsüne tıklayın. Ardından Kabuğu Yeniden Başlat seçeneğine tıklayın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.