通訳コンソールをクリアするには?


325

ほとんどのPython開発者と同様に、私は通常、コンソールウィンドウを開いたままにし、Pythonインタープリターを実行してコマンドやその他のdir()ものをテストしますhelp() stuff

他のコンソールと同様に、しばらくすると、過去のコマンドと印刷の目に見えるバックログが乱雑になり、同じコマンドを何度か再実行すると混乱することがあります。Pythonインタープリターコンソールをクリアするかどうか、またどのようにクリアするかについて考えています。

システムコールを実行し、clsWindowsまたはclearLinuxのいずれかで呼び出すことについて聞いたことがありますが、インタープリター自体に命令できることがあると期待していました。

注:私はWindowsで実行しているため、Ctrl+L機能しません。


ここでIPythonソリューション:stackoverflow.com/questions/6892191/...は
onewhaleid

誰もそれについて言及しなかったのには驚きです。しかし、Ipythonシェルを使用している場合は、WindowsでもCtrl + Lを実行できます
user93

回答:


442

あなたが述べたように、あなたはシステムコールを行うことができます:

Windowsの場合

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

Linuxの場合、ラムダは

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

1
この答えは、私が求めていたものの「精神」に最も近いものです、ありがとう。
ソビエト連邦2009

1
+1、いい答え。表示されないように戻り値を消費する方法はありますか?クリアを実行した後、「0」が表示されます。
2009

15
戻り値はNoneになるため、ラムダの代わりに通常の関数で定義して「0」を表示しないようにしてください。
Akbar ibrahim

46
使用の何が問題になっていdefますか?lambdaa defがより明確なときになぜaを使用するのですか?
S.Lott、2009

17
@AkbaribrahimのNoneは印刷されないため、これを試してください:clear = lambda: os.system('cls') or None
enpenax

193

ここでもう少しクロスプラットフォームである便利なもの

import os

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

# now, to clear the screen
cls()

すばらしい方法です。これを上記のラムダの提案と組み合わせて、コードの行を保存してください。ありがとうございました!:)
2012年

import os os.system('cls')
Nhu Vyを2016

1
TERM環境変数が設定されていません。
ジョナサン

87

さて、ここに簡単なハックがあります:

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

または、いくつかの入力を保存するには、このファイルをpython検索パスに配置します。

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

wipe = Wipe()

それからあなたはあなたが好きなインタプリタからこれを行うことができます:)

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

12
ハハ、それはかなり面白いです。正確に私が探していたものではありませんが、良い試みです。
2009

4
@Triptych:c = "\ n" * 100便利、+ 1。小さなコメントがクリアされ、シェルの下部に表示されます。シェルの上部から開始することをお勧めします。
pythonbeginer '09 / 09/21

1
または、ANSI解釈あなたの端末エミュレータは、もっと良い場合:"\x1B[H\x1B[J"
アルバメンデス

8
人々は笑っていますが、多くの改行を印刷することは、まさに外部のプロセスclearと処理clsです。これその方法です。(もちろん、単なる印刷、または「呼び出し」を伴う関数であり、「明確な」文字列に割り当てないでください)
jsbueno

4
@jsbuenoいいえ、そうではありません。まあ、Windowsの場合もあるでしょう(疑いはありますが、コンソールをクリアするためのAPIがあります)。他のすべてのシステムでclearは、画面をクリアするディレクティブを出力します。スクロールバックバッファを破棄することなく。私のシステムでは、次の制御シーケンスが出力されます\33[3J\33[H\33[2J。つまり、です[erase scrollback] [reset cursor position] [erase screen]。は、[erase scrollback]を使用して省略できますclear -x
18

28

これは古い質問ですが、他の回答の中で最高だと思うものを要約したものを提供し、これらのコマンドをファイルに入れてPYTHONSTARTUPを設定することを提案することで、独自のしわを追加したいと思いましたそれを指す環境変数。私は現在Windowsを使用しているので、少し偏っていますが、他の方向に簡単に傾けることができます。

Windowsで環境変数を設定する方法を説明しているいくつかの記事を次に示し
    ます。sys.path.appendを使用する場合、および%PYTHONPATH%を変更するだけで十分な場合Windows XPで環境変数を管理する
    方法
    システムおよびユーザー環境変数の構成
    グローバルシステムの使用方法Windowsの環境変数

ところで、スペースが含まれている場合でも、ファイルへのパスを引用符で囲まないでください。

とにかく、これがPython起動スクリプトを挿入する(または既存のスクリプトに追加する)コードの私の見解です。

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

ところで、@ Triptychの __repr__トリックを使用exit()して、just exit(およびそのエイリアスの同上quit)に変更することもできます。

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

quit = exit = exit()

最後に、プライマリインタープリタプロンプト>>>cwd +に変更する次のようなものがあります>>>

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

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

これはおそらく最良の答えです-他の答えからのテクニックの組み合わせ。PYTHONSTARTUP + repr + os.system( 'cls')。非常に素晴らしい。
Triptych

@Triptych:使用__repr__および/または__str__この方法の興味深い副作用の1つ>>> vars()は、インタープリターコンソールで入力すると、このように定義されたすべてのコマンドが実行されることです。たとえば、私のシステムでは、画面をクリアしてからコンソールを終了しました。一体何が起こっているのかを理解するのにしばらく
かかり

面白い。私は、この問題もに適用され参照locals()してglobals()。名前を削除し、関数呼び出し後に名前を再割り当てするこれらの関数の周りの単純なデコレーターは、可能な解決策です...
Triptych

@Triptych:デコレータのアイデアは、少なくとも私自身の試みでは機能しないようです。実行可能な代替案を考え出すことは、驚くほど難しいことが判明しています。
martineau

vars()globals()およびlocals()呼び出しの結果を一時的に変更するソリューションの候補があります:gist.github.com/4172781
Triptych

28

Windowsでそれを行う方法はいくつかあります。

1.キーボードショートカットを使用する:

Press CTRL + L

2.システムのinvokeメソッドを使用:

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

3.改行印刷を100回使用します。

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

5
これらのすべての方法はきれいです...ナフ。clsWindowsでのみ動作し、プログラムがクロスプラットフォームになるのを難しくします。100を印刷するnewlinesだけです... また、プログラムではキーボードショートカットは使用されません。
ルーク、

22

間違いなく最も簡単な方法はCtrl+ Lです。

これは端末のOS Xでも同じです。


3
Windows 8.1でctrlキーを使用して大文字または小文字の「L」を使用してこのソリューションを試しました。私にはうまくいきません。シェルウィンドウを開いたり閉じたりして、クリアします。
Chris22、2016年

2
OS Xでは、表示がクリアになるまでCtrl + Lで端末に埋め込みを行います。上にスクロールして履歴を表示することもできます。Cmd + Kを使用して、表示と印刷の履歴をクリアします。 OS Xターミナルのホットキーのより完全なリスト
Andrew Franklin

2
Ubuntu Desktop 16で私にとって美しく機能する
Nam G VU

15

これを行う私の方法は、次のような関数を書くことです:

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

次にclear()、画面をクリアするために呼び出します。これは、windows、osx、linux、bsd ...すべてのOSで動作します。


を意味するos.name in ('linux','osx')場合もあれば、追加することもでき'posix'ます。
rsanden 2015

@rsanden 'linux'と 'osx'は、実際に使用しているOSのほとんどすべてをカバーしています。
MartinUbuntu

私はUbuntu 15.04を実行os.name == 'posix'していて、Python 2.7.9と3.4.3の両方で実行しています
rsanden '24 / 07/15

@rsandenがposixを追加しました。
MartinUbuntu

9

これは、この質問で見つかった情報を組み合わせて作成したクロスプラットフォーム(Windows / Linux / Mac /おそらくifチェックに追加できる他のもの)のバージョンスニペ​​ットです。

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

同じアイデアですが、構文糖のスプーンを使用します。

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

8

ワイパーはかっこいいです。周りに「()」を入力する必要がないというのが良い点です。ここにわずかなバリエーションがあります

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

使い方は非常に簡単です:

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

2
名前付けclass clsます。
martineau

1
のインスタンスに名前class Clsを付けますclscls = Cls()
Amol 2011

ただし、初期名前空間を1つではなく2つで汚染します。
martineau

@Amol私は私のソリューションであなたや他の人のテクニックを使用しました。あなたはそれclass clsからできるcls=cls()
アルバメンデス

8

これはあなたができる最も簡単なことであり、追加のライブラリを必要としません。画面がクリアさ>>>れ、左上隅に戻ります。

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

これには、Spyderでも機能するという利点があります。
グラハムG


5

他のすべての回答を統合する決定的なソリューションを次に示します。特徴:

  1. あなたはコピーして貼り付けることができますコードをシェルまたはスクリプトに。
  2. あなたはそれを好きなように使うことができます

    >>> clear()
    >>> -clear
    >>> clear  # <- but this will only work on a shell
  3. これをモジュールとしてインポートできます。

    >>> from clear import clear
    >>> -clear
  4. スクリプトとして呼び出すことができます。

    $ python clear.py
  5. それは本当にマルチプラットフォーム。システムを認識できない場合
    (、、または)cent、空白行の印刷にフォールバックします。dosposix


[フル]ファイルはこちらからダウンロードできます:https : //gist.github.com/3130325
または、コードを探しているだけの場合:

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


4

アイドルを使用します。多くの便利な機能があります。 Ctrl+F6たとえば、コンソールをリセットします。コンソールを閉じて開くと、コンソールをクリアできます。


アイドル状態でどうするの?閉じて再開しますか?
アンドレア・アンブ

5
いいえ、F6アイドルコンソールはリセットされませんが、リセットされCTRL+F6ます。残念ながら、これは画面をクリアしませああ!(Python Win32 Idleバージョン2.6.2、2.7.1、3.2)。
ridgerunner

4

Windowsの「シェル」がこれをサポートしているかどうかはわかりませんが、Linuxの場合:

print "\033[2J"

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

私の意見clsosは、での電話は一般的に悪い考えです。システムでclsコマンドまたはclearコマンドをなんとか変更して、スクリプトをadminまたはrootとして実行するとします。


この場合、clsは理想的ではなく、ANSIエスケープシーケンスの方が適しています。特に、osを使用して新しいプロセスを呼び出すことは、数バイトをstdoutにプッシュすることと比較すると、かなり高価な操作です。
silviot

2

Windows XP、SP3でMINGW / BASHを使用しています。

(これを.pythonstartupに貼り付けます)
#私のctrl-lはすでに機能していますが、これは他の人を助けるかもしれません
#ウィンドウの下部にプロンプ​​トを残します...
インポートreadline
readline.parse_and_bind( '\ Cl:clear-screen')

#これは.inputrcにもあるのでBASHで機能しますが、いくつかの
理由で#Python に入るとドロップされます
readline.parse_and_bind( '\ Cy:kill-whole-line')


私はもう 'exit()'と入力するのを我慢できず、マルティノー/トリプティクのトリックに大喜びしました:

私は少しそれを修正しました(.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

clearLinuxおよびclsWindows のOSコマンドは、出力できる「マジックストリング」を出力します。文字列を取得するには、popenを使用してコマンドを実行し、後で使用できるように変数に保存します。

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

print clear

私のマシンでは文字列は'\x1b[H\x1b[2J'です。


1
1)その魔法の文字列はANSIシーケンスです。\x1b[H「カーソルを左上隅に移動する」、\x1b[2J「すべての画面をクリアする」を意味します。2) WindowsではANSIが認識されないため、おそらく魔法の文字列はありません。
アルバメンデス

1
涼しい!また、python3の場合print( '\ x1b [H \ x1b [2J'、end = ''); 前の改行を避けるのに役立ちます。
DenMark 2017

マジックストリングは、Python 3.6がインストールされたMicrosoft Windows 10コンソールで動作しました。私は、openでの使用ではなく、文字列シーケンスにプラスしました。
DevPlayer

2

これを行うには、2つの方法があります。

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

os.nameがこれらのどれでもない場合、空の行の印刷にフォールバックしてみませんか?
アルバメンデス

Jythonの場合は、os.name = 'java'
iChux

よさそうです、これはプログラムがクロスプラットフォームになることができるということですか?
ルーク、

2

Macの場合は、単純な方法cmd + kでうまくいくはずです。


2

最も簡単な方法は、OSモジュールを使用することです

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

1

これは、クロスプラットフォームであり、また好ましい使用しなければならないsubprocess.call代わりにos.system通りドキュメント。Python> = 2.4で動作するはずです。os.system

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

明確にするためにこれはどうですか

- os.system('cls')

それは可能な限り短いです!


はい、ただしマルチプラットフォームはなく、画面をクリアするたびに再入力する必要があります。
アルバメンデス

1

私はpythonに慣れていない(本当に本当に新しい)と、本の1つで、コンソールに表示されたバックログと過去のコマンドと印刷をクリアするこの小さな関数を作成する方法を教える言語について理解するために読んでいます。

シェルを開く/新しいドキュメントを作成する/次のように関数を作成する:

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

pythonディレクトリのlibフォルダーに保存します(私のものはC:\ Python33 \ Libです)次にコンソールをクリアする必要があるときは、次の関数を呼び出すだけです。

clear()

それでおしまい。PS:とにかくあなたが望む機能に名前をつけることができます 「ワイパー」「ワイプ」とバリエーションを使用している人を見たことがあります。


1

私はSpyder(Python 2.7)を使用しており、インタープリターコンソールをクリーンアップするには、次のいずれかを使用します。

%晴れ

これにより、コマンドラインが強制的に先頭に移動し、以前の古いコマンドが表示されなくなります。

または、コンソール環境で[オプション]をクリックし、すべてを削除する[カーネルの再起動]を選択します。



1

入力するだけ

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

1

コードでそれを行う必要がない場合は、CTRL + Lを押してください。


はい、これは機能しますが、コンソールをクリアするpythonファイルでコマンドを作成したい場合、ユーザーに何かを入力させて、自分でクリアするように指示するのではないでしょうか。コードを使用してコンソールをクリアします。
madladzen

1

Arch Linux(xfce4-terminalPython 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'")

... に追加 ~/.pythonrc

  • clear() 画面をクリアします
  • wipe() 端末バッファ全体をワイプします

0

編集:私は「Windows」を読んだばかりですが、これはLinuxユーザー向けです。


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

「whatyouwant.sh」という名前で保存し、chmod + xで実行します。

./whatyouwant.sh python

またはpython以外(アイドル、何でも)。これは、実際に終了するかどうかを尋ね、そうでない場合はpython(またはパラメーターとして指定したコマンド)を再実行します。

これにより、すべての画面とすべての変数/オブジェクト/ Pythonで作成/インポートしたすべてがクリアされます。

Pythonでは、終了したいときに単にexit()と入力します。


0

OK、これはそれほど技術的な答えではありませんが、私はNotepad ++のPythonプラグインを使用しており、コンソールを右クリックして[クリア]をクリックするだけで手動でコンソールをクリアできることがわかりました。これが誰かに役立つことを願っています!

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