web-dev-qa-db-fra.com

Y a-t-il un caractère de montée? (En face de \ n)

Je voudrais écraser quelque chose sur une ligne ci-dessus dans une console série. Y a-t-il un personnage qui me permet de monter?

Je vous remercie.

45
Sponge Bob

La plupart des terminaux comprennent codes d'échappement ANSI . Les codes pertinents pour ce cas d'utilisation:

  • "\033[F" - déplace le curseur au début de la ligne précédente
  • "\033[A" - déplace le curseur d'une ligne vers le haut

Exemple (Python):

print("\033[FMy text overwriting the previous line.")
63
Sven Marnach

Non, pas vraiment facilement, pour cela, vous devez utiliser quelque chose comme bibliothèque curses , surtout si vous voulez avoir plus de contrôle sur le placement du curseur et faire plus de choses par programmation.

Voici un lien pour les documents Python sur Programmation avec les curseurs , et ce court tutoriel/exemple pourrait aussi être intéressant.

Je viens de trouver cette note dans le docs au cas où vous utilisez Windows:

Personne n'a créé de port Windows pour le module curses. Sur une plateforme Windows, essayez le module Console écrit par Fredrik Lundh. Le module de console fournit une sortie texte adressable par curseur, ainsi qu'une prise en charge complète des entrées de souris et de clavier, et est disponible sur http://effbot.org/zone/console-index.htm .

Je crois que pour C++ il y a la bibliothèque NCurses , la page liée a une section sur déplacement du curseur si vous voulez fouiller avec C++. Il y a aussi le NCurses Programming HowTo .

Long il y a longtemps, j'ai utilisé la bibliothèque curses avec C avec succès.

Mise à jour :

J'ai raté la partie concernant l'exécution de ceci sur un terminal/en série, car la séquence d'échappement ANSI, en particulier pour une tâche simple comme la vôtre, sera la plus facile et je suis d'accord avec la solution @SvenMarnach pour cela.

9
Levon
for i in range(10):  
    print("Loading" + "." * i) 

    doSomeTimeConsumingProcessing()

    sys.stdout.write("\033[F") # Cursor up one lin

Essayez ceci dans Python et remplacez doSomeTimeConsumingProcessing () par toute routine nécessaire, et j'espère que cela vous aidera

3
user7380054

Je me trompe peut-être mais:

#include <windows.h>


void gotoxy ( int column, int line )
{
  COORD coord;
  coord.X = column;
  coord.Y = line;
  SetConsoleCursorPosition(
    GetStdHandle( STD_OUTPUT_HANDLE ),
    coord
    );
}

dans la console standard de Windows.

1
user2244507