簡単な質問:
シェルで画面をクリアするにはどうすればよいですか?私は次のような方法を見てきました:
import os
os.system('cls')
これは、windows cmdを開き、画面をクリアして閉じますが、シェルウィンドウをクリアしたいです
(PS:これが役立つかどうかはわかりませんが、Pythonのバージョン3.3.2を使用してい
ます)ありがとうございます:)
回答:
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)
import subprocess as sp sp.call('clear',shell=True)
あることを除いて、これが機能することを試しました0
。
ctrl+L
sp.call('cls', shell=True);
ショートカットCTRL+はLどうですか?
Python、Bash、MySQL、MATLABなどのすべてのシェルで機能します。
import os
os.system('cls') # For Windows
os.system('clear') # For Linux/OS X
os.system('clear')
Mac OS X端末の場合(デフォルトのシェル、、、bash
およびで動作することが確認されていますcsh
)。
あなたが探している種類のものは、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()
おそらくうまくいくでしょう。
stdscr = curses.initscr()
すると、画面をクリアするようにstdscr.clear()
機能し、何もしません。Python3.4を使用するとstdscr = curses.initscr()
、画面はクリアされますが、改行を処理する端末の機能が失われます。Enterキーを繰り返し押す>>> >>> >>> >>>
と、次のようになります。コマンドを入力することはできますが、表示されません。また、この動作はexit()
Pythonを使用しても持続します。使用を避けてください!
curses
モジュールに互換性の問題があるかもしれない理由があるかどうか知っていますか(Windows対Mac対Linux)?この問題は、少なくとも2つの異なるMac端末で発生することを確認できます。動作はBASHで持続しますが、CSHでは持続しません。うーん....私は呪いの開発者、シェルの開発者に連絡するべきだと思いますか、それともSOコミュニティに尋ねるべきだと思いますか?再度、感謝します!
万能の優れたCLIライブラリであるclick
ことに加えて、プラットフォームに依存しないclear()
機能も提供します。
import click
click.clear()
この関数は、すべての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'])
Pythonで画面をクリアする簡単な方法は、Ctrl+を使用するLことですが、シェルや他のプログラムでも機能します。
上記のメソッドのいずれかをバックグラウンドで使用するクラスを使用しています... WindowsとLinuxで機能することに気付きました... system( 'clear'の代わりにclear()と入力する方が簡単なので、使用するのが好きです。 )またはos.system( 'clear')
pip3 install clear-screen
from clear_screen import clear
そして、シェルをクリアしたいとき:
clear()
使用して窓10とpyhton3.5を私は多くのコードをテストしましたが、これ以上の助けはありませんでした。
最初に単純な関数を定義します。この関数は50行の改行を出力します(50の数は画面に表示できる行数によって異なるため、この数を変更できます)
def cls(): print ("\n" * 50)
その後、必要な回数だけ呼び出します
cls()
ウィンドウまたはLinuxOSを使用できます
import os
os.system('cls')
os.system('clear')
サブプロセスモジュールを使用できます
import subprocess as sp
x=sp.call('cls',shell=True)
すべてのcursesをインポートしたり、1つの制御文字を取得するためだけにシェルアウトしたりするのではなく、(Linux / macOSで)次のように使用できます。
print(chr(27) + "[2J")
(出典:Pythonでターミナルをクリアする)
これがあなた自身のものを作る方法です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
代わりに使用してください!cls
os
今、あなたがただ書くcls
かclear
、コンソールで-それはそれをクリアします!偶数ではない、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
それが最善の方法です。
>>>import os
>>>def cls(): os.system('cls')
>>>cls()