Juste une petite question:
comment effacer l'écran en shell? J'ai vu des moyens comme:
import os
os.system('cls')
Cela ouvre simplement la fenêtre cmd, efface l'écran et se ferme mais je veux que la fenêtre shell soit effacée
(PS: je ne sais pas que cela aide, mais j'utilise la version 3.3.2 de Python)
Merci :)
Réponses:
Pour macOS / OS X, vous pouvez utiliser le module de sous-processus et appeler 'cls' depuis le shell:
import subprocess as sp sp.call('cls', shell=True)
Pour éviter que «0» ne s'affiche en haut de la fenêtre, remplacez la deuxième ligne par:
tmp = sp.call('cls', shell=True)
Pour Linux, vous devez remplacer la
cls
commande parclear
tmp = sp.call('clear', shell=True)
la source
import subprocess as sp sp.call('clear',shell=True)
qui fonctionne, sauf qu'il y a un0
en haut de la fenêtre du terminal.ctrl+L
sp.call('cls', shell=True);
Et le raccourci CTRL+ L?
Cela fonctionne pour tous les shells, par exemple Python, Bash, MySQL, MATLAB, etc.
la source
import os os.system('cls') # For Windows os.system('clear') # For Linux/OS X
la source
os.system('clear')
pour les terminaux Mac OS X (confirmé pour fonctionner avec le shell par défautbash
, et aussi pourcsh
).Le genre de chose que vous recherchez se trouve dans le module curses.
c'est à dire
import curses # Get the module stdscr = curses.initscr() # initialise it stdscr.clear() # Clear the screen
Note importante
La chose importante à retenir est avant toute sortie, vous devez réinitialiser le terminal en mode normal, cela peut être fait avec les lignes suivantes:
curses.nocbreak() stdscr.keypad(0) curses.echo() curses.endwin()
Sinon, vous obtiendrez toutes sortes de comportements étranges. Pour s'assurer que cela est toujours fait, je suggérerais d'utiliser le module atexit, quelque chose comme:
import atexit @atexit.register def goodbye(): """ Reset terminal from curses mode on exit """ curses.nocbreak() if stdscr: stdscr.keypad(0) curses.echo() curses.endwin()
Fera probablement très bien.
la source
stdscr = curses.initscr()
travaux pour effacer l'écran, et lestdscr.clear()
ne fait rien. En utilisant Python3.4, le effacestdscr = curses.initscr()
l'écran, mais enlève la capacité du terminal à traiter les nouvelles lignes. Lorsque j'appuie sur Entrée à plusieurs reprises, cela donne ce qui suit:>>> >>> >>> >>>
et ainsi de suite. Je peux toujours taper des commandes, mais elles n'apparaissent pas. En outre, ce comportement persiste même lorsque jeexit()
Python. ÉVITEZ L'UTILISATION!curses
module peut avoir des problèmes de compatibilité (Windows vs Mac vs Linux)? Je peux confirmer que ce problème se produit au moins sur deux terminaux Mac différents. Le comportement persiste dans BASH mais pas dans CSH. Hmm .... Pensez-vous que je devrais contacter le développeur de malédictions, le développeur du shell, ou simplement demander à la communauté SO? Merci encore!Voici quelques options que vous pouvez utiliser sous Windows
Première option:
import os cls = lambda: os.system('cls') >>> cls()
Deuxième option:
cls = lambda: print('\n' * 100) >>> cls()
Troisième option si vous êtes dans la fenêtre Python REPL:
la source
En plus d'être une excellente bibliothèque CLI,
click
fournit également uneclear()
fonction indépendante de la plate-forme :import click click.clear()
la source
Cette fonction fonctionne dans n'importe quel système d'exploitation (Unix, Linux, macOS et Windows)
Python 2 et 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
Dans Windows, la commande est
cls
, dans les systèmes de type Unix, la commande estclear
.platform.system()
renvoie le nom de la plateforme. Ex.'Darwin'
pour macOS.subprocess.call()
effectue un appel système. Ex.subprocess.call(['ls','-l'])
la source
Un moyen plus simple d'effacer un écran en python est d'utiliser Ctrl+ Lbien que cela fonctionne pour le shell ainsi que pour d'autres programmes.
la source
Si vous utilisez un terminal Linux pour accéder à python, cntrl + l est la meilleure solution pour effacer l'écran
la source
J'utilise une classe qui utilise simplement l'une des méthodes ci-dessus dans les coulisses ... J'ai remarqué que cela fonctionne sur Windows et Linux ... J'aime l'utiliser car il est plus facile de taper clear () au lieu de system ('clear' ) ou os.system ('clear')
pip3 install clear-screen from clear_screen import clear
puis lorsque vous souhaitez effacer le shell:
clear()
la source
en utilisant Windows 10 et pyhton3.5, j'ai testé de nombreux codes et rien ne m'a aidé plus que cela:
Définissez d'abord une fonction simple, cette fonction imprimera 50 nouvelles lignes; (le nombre 50 dépendra du nombre de lignes que vous pouvez voir sur votre écran, vous pouvez donc changer ce nombre)
def cls(): print ("\n" * 50)
puis appelez-le autant de fois que vous le souhaitez ou que vous en avez besoin
cls()
la source
Command+K
fonctionne très bien dans OSX pour effacer l'écran.Shift+Command+K
pour effacer uniquement le tampon de défilement.la source
import curses stdscr = curses.initscr() stdscr.clear()
la source
Le sous-processus vous permet d'appeler "cls" pour Shell.
import subprocess cls = subprocess.call('cls',shell=True)
C'est aussi simple que je peux le faire. J'espère que ça marche pour toi!
la source
vous pouvez utiliser Windows ou Linux OS
import os os.system('cls') os.system('clear')
vous pouvez utiliser le module de sous-processus
import subprocess as sp x=sp.call('cls',shell=True)
la source
os.system('cls')
fonctionne très bien lorsque je les ouvre. Il s'ouvre dans le style cmd.la source
Plutôt que d'importer tous les malédictions ou de décortiquer juste pour obtenir un caractère de contrôle, vous pouvez simplement utiliser (sous Linux / macOS):
print(chr(27) + "[2J")
(Source: terminal clair en Python )
la source
Voici comment créer le vôtre
cls
ouclear
commande qui fonctionnera sans appeler explicitement une fonction!Nous profiterons du fait que la console python appelle
repr()
pour afficher des objets à l'écran. Ceci est particulièrement utile si vous avez votre propre shell python personnalisé (avec l'-i
option par exemple) et que vous avez un script de pré-chargement pour celui-ci. Voici ce dont vous avez besoin:import os class ScreenCleaner: def __repr__(self): os.system('cls') # This actually clears the screen return '' # Because that's what repr() likes cls = ScreenCleaner()
Utilisez
clear
plutôt quecls
si vous êtes sous Linux (à la fois dans laos
commande et dans le nom de la variable)!Maintenant, si vous écrivez simplement
cls
ouclear
dans la console, cela l'effacera! Pas mêmecls()
ouclear()
- juste la variable brute. C'est parce que python appellerarepr(cls)
pour l'imprimer, ce qui déclenchera à son tour notre__repr__
fonction.Testons-le:
>>> 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
Et l'écran est clair!
Pour clarifier - le code ci-dessus doit soit être importé dans la console comme ceci
from somefile import cls
Ou pré-chargez directement avec quelque chose comme:
python -i my_pre_loaded_classes.py
la source
C'est la meilleure façon:
>>>import os >>>def cls(): os.system('cls') >>>cls()
la source
Pour Python IDLE 3.8.1, vous pouvez redémarrer le Shell
CTRL + F6
Dans le menu Cliquez sur le menu Shell. Cliquez ensuite sur l'option Redémarrer Shell.
la source