シェルの画面をクリア


90

簡単な質問:
シェルで画面をクリアするにはどうすればよいですか?私は次のような方法を見てきました:

import os
os.system('cls')

これは、windows cmdを開き、画面をクリアして閉じますが、シェルウィンドウをクリアしたいです
(PS:これが役立つかどうかはわかりませんが、Pythonのバージョン3.3.2を使用してい
ます)ありがとうございます:)


回答:


57

macOS / OS Xの場合、サブプロセスモジュールを使用して、シェルから「cls」を呼び出すことができます。

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

ウィンドウの上部に「0」が表示されないようにするには、2行目を次のように置き換えます。

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

Linuxの場合、clsコマンドを次のように置き換える必要がありますclear

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

3
私はMacOS Xを使用していますが、ターミナルウィンドウの上部にimport subprocess as sp sp.call('clear',shell=True)あることを除いて、これが機能することを試しました0
Daniel Dropik 2014

0は、シェルからの「cls」コマンド呼び出しの戻り値です。その値を変数に格納するだけで、答えを編集してそれも取り除きました。
galHai 2014

9
これを試してくださいctrl+L
サイラム2016年

これはコマンドラインで機能します。質問は、Pythonでそれを行う方法でした。
エドワードフォーク

解決策をありがとう、私はshell = Trueがありませんでした。0が表示されないようにするには、ステートメントの最後にセミコロンを追加することもできます。 sp.call('cls', shell=True);
Waylon Walker

84

ショートカットCTRL+はLどうですか?

Python、Bash、MySQL、MATLABなどのすべてのシェルで機能します。


6
残念ながら、Windows10の新しいcmdを含むWindowsでは動作しません
9a3eedi 2018年

自動化にサブプロセスを使用する場合、このアプローチは機能しません。
mountainLion

64
import os

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

また、os.system('clear')Mac OS X端末の場合(デフォルトのシェル、、、bashおよびで動作することが確認されていますcsh)。
jvriesem 2014年

次のように、これを実行する関数を定義することもできます。defcls():os.system( 'cls')(Enterキーを2回押します)。次に、cls()と入力するだけで、画面をクリアできます。

問題は、シェルでこれを行う方法についてでした。
カイルデラニー2016

1
@KyleDelaneyは非効率的ですが、シェルで機能します。また、それが彼らが探していたものであるため、多くの人々がこれが有用であると感じました。
gaspa 7918

12

あなたが探している種類のものは、cursesモジュールにあります。

すなわち

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

重要な注意点

覚えておくべき重要なことは、終了する前に、端末を通常モードにリセットする必要があることです。これは、次の行で実行できます。

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

そうしないと、あらゆる種類の奇妙な行動をとることになります。これが常に行われるようにするには、次のようなatexitモジュールを使用することをお勧めします。

import atexit

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

おそらくうまくいくでしょう。


もっと具体的にできますか?
josh 2013

1
ターミナルでMacOS X10.7.5とiTerm2を実行しています。Python2.7を使用stdscr = curses.initscr()すると、画面をクリアするようにstdscr.clear()機能し、何もしません。Python3.4を使用するとstdscr = curses.initscr()、画面はクリアされますが、改行を処理する端末の機能が失われます。Enterキーを繰り返し押す>>> >>> >>> >>> と、次のようになります。コマンドを入力することはできますが、表示されません。また、この動作はexit()Pythonを使用しても持続します。使用を避けてください!
jvriesem 2014年

@jvriesem cursesモジュールは長い間使用されており、多くの人に使用されています-短い(20行程度)例といずれかの投稿で動作を複製できるかどうかを確認することをお勧めしますスタックオーバーフローの質問として、または開発者のメーリングリストにあります。
スティーブバーンズ

良い考えです-それは私の「使用を避けてください!」よりも良い反応です。ステートメント。この回答の最初の2行は、私にとって問題を再現した2行でした。cursesモジュールに互換性の問題があるかもしれない理由があるかどうか知っていますか(Windows対Mac対Linux)?この問題は、少なくとも2つの異なるMac端末で発生することを確認できます。動作はBASHで持続しますが、CSHでは持続しません。うーん....私は呪いの開発者、シェルの開発者に連絡するべきだと思いますか、それともSOコミュニティに尋ねるべきだと思いますか?再度、感謝します!
jvriesem 2014年

@ jvriesem-終了後も含めて、終了後にターミナルを標準モードにリセットする方法を含めるように回答を更新しました。
スティーブバーンズ

12

Windowsで使用できるいくつかのオプションは次のとおりです

最初のオプション:

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

>>> cls()

2番目のオプション:

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

>>> cls()

Python REPLウィンドウを使用している場合の3番目のオプション:

Ctrl+L


7

この関数は、すべてのOS(Unix、Linux、macOS、およびWindows)Python2およびPython3で機能します。

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では、コマンドはですcls。unixライクなシステムでは、コマンドはclearです。
platform.system()プラットフォーム名を返します。例 'Darwin'macOS用。
subprocess.call()システムコールを実行します。例subprocess.call(['ls','-l'])


6

Pythonで画面をクリアする簡単な方法は、Ctrl+を使用するLことですが、シェルや他のプログラムでも機能します。


4

Linuxターミナルを使用してPythonにアクセスしている場合は、cntrl + lが画面をクリアするための最良のソリューションです。


4

上記のメソッドのいずれかをバックグラウンドで使用するクラスを使用しています... WindowsとLinuxで機能することに気付きました... system( 'clear'の代わりにclear()と入力する方が簡単なので、使用するのが好きです。 )またはos.system( 'clear')

pip3 install clear-screen

from clear_screen import clear

そして、シェルをクリアしたいとき:

clear()

3

使用して窓10pyhton3.5を私は多くのコードをテストしましたが、これ以上の助けはありませんでした。

最初に単純な関数を定義します。この関数は50行の改行を出力します(50の数は画面に表示できる行数によって異なるため、この数を変更できます)

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

その後、必要な回数だけ呼び出します

cls()

既成のコマンドのアイデアはどれも私にはうまくいきませんでした。これを作成すると、もちろん私自身の機能が実行されました。
DashingQuark 2018

2

Command+K 画面をクリアするためにOSXで正常に動作します。

Shift+Command+K スクロールバックバッファのみをクリアします。



1

サブプロセスを使用すると、シェルの「cls」を呼び出すことができます。

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

それは私ができる限り簡単です。それがあなたのために働くことを願っています!


1
  1. ウィンドウまたはLinuxOSを使用できます

    import os
    os.system('cls')
    os.system('clear')
    
  2. サブプロセスモジュールを使用できます

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

1

os.system('cls')それらを開くと正常に動作します。cmdスタイルで開きます。


1

すべてのcursesをインポートしたり、1つの制御文字を取得するためだけにシェルアウトしたりするのではなく、(Linux / macOSで)次のように使用できます。

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

(出典:Pythonでターミナルをクリアする


0

これがあなた自身のものを作る方法ですclsまたはclear明示的に任意の関数を呼び出すことなく動作するよう命令を!

Pythonコンソールがrepr()オブジェクトを画面に表示するために呼び出すという事実を利用します。これは、独自にカスタマイズしたPythonシェル(-iたとえばオプション付き)があり、そのためのプリロードスクリプトがある場合に特に便利です。これはあなたが必要とするものです:

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を使用している場合(コマンドと変数名の両方で)のclear代わりに使用してください!clsos

今、あなたがただ書くclsclear、コンソールで-それはそれをクリアします!偶数ではない、cls()またはclear()-生の変数だけ。これは、Pythonがrepr(cls)それを印刷するために呼び出すためです。これにより、__repr__です。関数ます。

それをテストしてみましょう:

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

そして、画面はクリアです!

明確にするために-上記のコードは、次のようにコンソールにインポートする必要があります

from somefile import cls

または、次のようなものを直接プリロードします。

python -i my_pre_loaded_classes.py

0

それが最善の方法です。

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

3
私はあなたの答えが前の年にすでに与えられた答えのどれよりもどのように改善するかを本当に見ていません。
デビッドバック

それを必要とする人は見るでしょう。改善の必要はありません。ありがとう兄貴。
Fahimbd_14

2
彼はあなたの答えを改善することについて話していませんでした。彼は、他の誰かがすでに同じものを与えているので、あなたの答えは役に立たないと述べました。
OmikronWeapon

0

Python IDLE 3.8.1の場合、シェルを再起動できます

CTRL + F6

メニューで[シェル]メニューをクリックします。次に、[シェルの再起動]オプションをクリックします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.