web-dev-qa-db-fra.com

Comment effacer la console d'interprétation?

Comme la plupart des développeurs Python, je garde généralement une fenêtre de console ouverte avec l'interpréteur Python exécuté pour tester les commandes, dir() stuff, help() stuff, etc.

Comme toute console, après un certain temps, l'arriéré visible des commandes et impressions précédentes devient encombré et parfois source de confusion lorsque vous réexécutez plusieurs fois la même commande. Je me demande si et comment effacer la console d'interprétation Python.

J'ai entendu parler de faire un appel système et d'appeler soit cls sous Windows, soit clear sous Linux, mais j'espérais pouvoir faire exécuter à l'interprète quelque chose que je pouvais commander.

Note: Je tourne sous Windows, donc Ctrl+L ne fonctionne pas.

286
Soviut

Comme vous l'avez mentionné, vous pouvez effectuer un appel système:

Pour les fenêtres

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

Pour Linux, le lambda devient

>>> clear = lambda: os.system('clear')
383
Ryan Duffield

voici quelque chose de pratique qui est un peu plus multi-plateforme

import os

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

# now, to clear the screen
cls()
175
popcnt

Eh bien, voici un petit hack:

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

Ou pour enregistrer des données en tapant, placez ce fichier dans votre chemin de recherche python:

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

wipe = Wipe()

Ensuite, vous pouvez faire tout ce que vous voulez à partir de l'interprète :)

>>> from wiper import wipe
>>> wipe
>>> wipe
>>> wipe
83
Triptych

Bien qu’il s’agisse d’une question plus ancienne, j’ai pensé que j’apporterais une contribution résumant ce que je pense être la meilleure des autres réponses et que j’ajoute une erreur en suggérant que vous mettiez ces commandes dans un fichier et que vous définissiez votre PYTHONSTARTUP. variable d'environnement pour y pointer. Depuis que je suis sur Windows pour le moment, il est légèrement biaisé de cette façon, mais pourrait facilement être incliné dans une autre direction.

Voici quelques articles que j'ai trouvés qui décrivent comment définir des variables d'environnement sous Windows:
Quand utiliser sys.path.append et quand modifier% PYTHONPATH% est suffisant
Comment gérer les variables d'environnement dans Windows XP
Configuration des variables système et de l'environnement utilisateur
Comment utiliser les variables d'environnement système global sous Windows

BTW, ne mettez pas de guillemets autour du chemin du fichier même s'il contient des espaces.

Quoi qu'il en soit, voici mon point de vue sur le code à insérer (ou à ajouter à votre existant) Python script de démarrage:

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

En passant, vous pouvez aussi utiliser @ Triptych__repr__ astuce pour changer exit() en juste exit (et idem pour son alias quit):

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

quit = exit = exit()

Enfin, voici quelque chose d'autre qui modifie l'invite d'interprète principale de >>> en cwd + >>>:

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

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

Vous avez plusieurs façons de le faire sous Windows:

1. Utilisation du raccourci clavier:

Press CTRL + L

2. Utilisation de la méthode invoke du système:

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

3. En utilisant la nouvelle ligne, imprimez 100 fois:

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

Le moyen le plus rapide et le plus simple est sans aucun doute Ctrl+L.

C'est la même chose pour OS X sur le terminal.

20
Alex K

ma façon de faire est d'écrire une fonction comme celle-ci:

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

puis appelez clear() pour effacer l'écran. cela fonctionne sur windows, osx, linux, bsd ... tous les systèmes d'exploitation.

14
MartinUbuntu

Wiper est cool, ce qui est bien, c'est que je n'ai pas à taper '()' autour. Voici une légère variation à cela

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

L'utilisation est assez simple:

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

Voici un multiplate-forme (Windows/Linux/Mac/Probablement d'autres que vous pouvez ajouter dans l'extrait de vérification if) que j'ai créée en combinant des informations trouvées dans cette question:

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

Même idée mais avec une cuillère de sucre syntaxique:

import subprocess   
clear = lambda: subprocess.call('cls||clear', Shell=True)
clear()
8
Pitto

pour l'utilisateur mac à l'intérieur du type de console python

import os
os.system('clear')

pour les fenêtres

os.system('cls')
6
yubaraj poudel

Voici la solution définitive qui fusionne toutes les autres réponses . Fonctionnalités:

  1. Vous pouvez copier-coller le code dans votre shell ou votre script.
  2. Vous pouvez utiliser à votre guise:

    >>> clear()
    >>> -clear
    >>> clear  # <- but this will only work on a Shell
    
  3. Vous pouvez l'importer en tant que module:

    >>> from clear import clear
    >>> -clear
    
  4. Vous pouvez appeler sous forme de script:

    $ python clear.py
    
  5. C'est vraiment multiplateforme ; s'il ne peut pas reconnaître votre système
    (ce, nt, dos ou posix) il revient à l’impression de lignes vierges.


Vous pouvez télécharger le fichier [complet] ici: https://Gist.github.com/3130325
Ou si vous cherchez simplement le code:

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()
5
Alba Mendez

J'utilise iTerm et l'application de terminal native pour Mac OS.

Je viens d'appuyer sur ⌘ + k

5

Utilisez inactif. Il a beaucoup de fonctionnalités pratiques. Ctrl+F6, par exemple, réinitialise la console. Fermer et ouvrir la console sont de bons moyens de la nettoyer.

4
S.Lott

C'est la chose la plus simple que vous puissiez faire et cela ne nécessite aucune bibliothèque supplémentaire. Cela effacera l'écran et renverra >>> dans le coin supérieur gauche.

print("\033[H\033[J")
4
Denis Rasulev

Je ne suis pas sûr que "Shell" de Windows supporte cela, mais sous Linux:

print "\033[2J"

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

À mon avis, appeler cls avec os est une mauvaise idée en général. Imaginez si je réussis à changer la commande cls ou clear sur votre système et que vous exécutiez votre script en tant qu'administrateur ou root.

3
Peter G. Marczis

J'utilise MINGW/BASH sous Windows XP, SP3.

(coller ceci dans .pythonstartup)
# Mon ctrl-l fonctionnait déjà, mais cela pourrait aider quelqu'un d'autre
# laisse Invite au bas de la fenêtre si ...
import readline
readline.parse_and_bind ('\ C-l: clear-screen')

# Cela fonctionne dans BASH car je l’ai aussi dans .inputrc, mais pour certains
# raison pour laquelle il est supprimé lorsque j'entre en Python
readline.parse_and_bind ('\ C-y: kill-whole-line')


Je ne supportais plus de taper 'exit ()' et j'étais ravi des astuces de martineau/Triptych:

Je l'ai cependant légèrement trafiqué (bloqué dans .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
AAAfarmclub

La commande du système d'exploitation clear sous Linux et cls sous Windows génère une "chaîne magique" que vous pouvez simplement imprimer. Pour obtenir la chaîne, exécutez la commande avec popen et enregistrez-la dans une variable pour une utilisation ultérieure:

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

print clear

Sur ma machine, la chaîne est '\x1b[H\x1b[2J'.

2
larsr

Voici deux bonnes façons de le faire:

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

Je suis peut-être en retard mais voici un moyen très simple de le faire

Type:

def cls():
    os.system("cls")

Alors quoi que vous fassiez pour effacer l'écran, tapez simplement votre code

cls()

Meilleur moyen possible! (Crédit: https://www.youtube.com/watch?annotation_id=annotation_3770292585&feature=iv&src_vid=bguKhMnvmb8&v=LtGEp9c6Z- )

1
stallion093

Que diriez-vous de cela pour un clair

- os.system('cls')

C'est à peu près aussi court que possible!

1
Dennis Kean

J'utilise Spyder (Python 2.7) et je nettoie la console d'interprétation

%clair

cela oblige la ligne de commande à aller au sommet et je ne verrai pas les anciennes commandes précédentes.

ou je clique sur "option" dans l’environnement de la console et sélectionnez "Redémarrer le noyau" pour tout supprimer.

1
Youness

J'ai trouvé que le moyen le plus simple est simplement de fermer la fenêtre et d'exécuter un module/script pour rouvrir le shell.

1
Seymour

juste utiliser ceci ..

print '\n'*1000

1
user1474157

Je suis nouveau dans python (vraiment très nouveau) et, dans l'un des livres que je lis, vous familiariserez avec le langage qu'ils enseignent, comment créer cette petite fonction pour effacer de la console le retard visible et commandes passées et impressions:

Ouvrir Shell/Créer un nouveau document/Créer une fonction comme suit:

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

Enregistrez-le dans le dossier lib de votre répertoire python (le mien est C:\Python33\Lib). La prochaine fois que vous voudrez effacer votre console, appelez simplement la fonction avec:

clear()

c'est ça. PS: vous pouvez nommer votre fonction comme vous le souhaitez. J'ai vu des gens utiliser "wiper" "wipe" et variations.

1
Adriana

Si vous n'avez pas besoin de le faire avec du code, appuyez simplement sur CTRL + L

1
Steven Tautonico

Si c'est sur mac, alors un simple cmd + k devrait suffire.

1
CoderChai

Les chaînes magiques sont mentionnées ci-dessus - je crois qu'elles proviennent de la base de données terminfo:

http://www.google.com/?q=x#q=terminfo

http://www.google.com/?q=x#q=tput+command+in+unix

$ tput clear | od -t x1z 0000000 1b 5b 48 1b 5b 32 4a>. [H. [2J <0000007

0
tput-guest

Le moyen le plus simple `>>> importer os

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

0
Bhaskar Mishra

Cela devrait être multi-plateforme et utiliser également le subprocess.call préféré au lieu de os.system selon le os.system docs . Devrait fonctionner dans Python> = 2.4.

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

EDIT: Je viens de lire "windows", ceci est pour les utilisateurs de Linux, désolé.


En 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

Enregistrez-le sous "whatyouwant.sh", chmod + x puis exécutez-le:

./whatyouwant.sh python

ou quelque chose d'autre que python (inactif, peu importe). Cela vous demandera si vous voulez réellement quitter, sinon, relancez python (ou la commande que vous avez donnée en paramètre).

Cela effacera tout, l'écran et toutes les variables/objets/tout ce que vous avez créé/importé en python.

Dans python, tapez simplement exit () lorsque vous souhaitez quitter.

0
Andrea Ambu

Il suffit d'entrer

import os
os.system('cls') # Windows
os.system('clear') # Linux, Unix, Mac OS X
0
Anonymous
>>> ' '*80*25

UPDATE: il est peu probable que la taille des fenêtres de la console soit 80x25; pour obtenir les dimensions réelles de la console, utilisez les fonctions de pager module. Python ne fournit rien de similaire à partir de la distribution principale.

>>> from pager import getheight
>>> '\n' * getheight()
0
anatoly techtonik

OK, la réponse est donc beaucoup moins technique, mais j'utilise le plugin Python pour Notepad ++ et il s'avère que vous pouvez simplement effacer la console manuellement en cliquant dessus avec le bouton droit de la souris et en cliquant sur "effacer". J'espère que cela aide quelqu'un là-bas!

0
guest12345