web-dev-qa-db-ja.com

行の文字がありますか? (\ nの反対)

シリアルコンソールの上の行の何かを上書きしたいと思います。上に移動できるキャラクターはありますか?

ありがとうございました。

45
Sponge Bob

ほとんどの端末は ANSIエスケープコード を理解します。このユースケースに関連するコード:

  • "\033[F" –前の行の先頭にカーソルを移動します
  • "\033[A" –カーソルを1行上に移動します

例(Python):

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

いいえ、本当に簡単ではありません。そのため、特にカーソルの配置をより細かく制御し、プログラムでより多くのことを行いたい場合は、 curses library のようなものを使用する必要があります。

Python docs on Programming with Curses のドキュメントへのリンクです。この短い tutorial/example も興味深いかもしれません。

Windowsを使用している場合、 docs でこのノートを見つけました。

CursesモジュールのWindowsへの移植は誰も行っていません。 Windowsプラットフォームでは、Fredrik Lundhが作成したコンソールモジュールを試してください。コンソールモジュールは、カーソルでアドレス指定可能なテキスト出力に加えて、マウスおよびキーボード入力を完全にサポートし、 http://effbot.org/zone/console-index.htm から利用できます。

C++には NCurses ライブラリがあり、リンクされたページには カーソルを移動する のセクションがあると信じています。 NCurses Programming HowTo もあります。

Long昔、私はCでcursesライブラリを非常にうまく使用しました。

更新

ANSIエスケープシーケンス、特にあなたのような単純なタスクが最も簡単になるため、これを端末/シリアルで実行する部分を逃しました。これに対する@SvenMarnachソリューションに同意します。

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

    doSomeTimeConsumingProcessing()

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

Pythonでこれを試して、doSomeTimeConsumingProcessing()を必要なルーチンに置き換えてください。

3
user7380054

私は間違っているかもしれませんが:

#include <windows.h>


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

windows標準コンソール。

1
user2244507