printでバックスペースができない。
print関数の中で \b を使って文字を削除ができません。
例えば、
print('abc\b')
と打つと
ab
が返るはずですが、自分のパソコンでは、
abc・
と'・'が出力されます。
pythonは3.6.3で、Anacondaを使っています。
ウェブで調べてみても同じ事象についての記述は見つからなかったので、教えてください。
なお、「退屈なことはPythonでやらせよう」の18章の参考プログラムの一環で上記をやろうとしています。
解決しました。ありがとうございます。
metropolisさんのご指摘通り、IDLE上ではなく、コマンドプロンプト上で実行すると'\b'が機能し、期待通りの動きとなりました。
本の中の「IDLEではなく、コマンドプロンプトや端末ウィンドウを開いて実行してください。」という記述を見逃していました。
皆様お手数おかけしました。
sys.pyautogui.textwrite()での解決策も勉強になりました。
ただ、他のウィンドウをクリックすると、ほかのウィンドウに字が打ち込まれてしまうところが、
危なっかしいですね。
解決前の追記内容↓
皆さんありがとうございます。
試し打ち1 dkatoさんの
print('abc\bdef')
と入力すると、
abc・def
と出力されました。
試し打ち2 metropolisさんの
print('abc\b', end='')
と入力すると、
abc・
と出力されました。
(・の部分は、このウェブサイトの入力欄では”□(白抜きの四角形)”に表示されています。)
metropolisさんの引用によると上記「試し打ち1」は、
abdefc
と出力されるのではないでしょうか。僕のOSでは、\bがまた違う動きをするようです。
OSはWindows10 Home version1709です。
パソコンは、Lenovo ideapad 720S-13IKBです。
もしかしたらOSを英語版に切り替える必要があるのでしょうか。
コードも書きたいところですが、著作権上そのまま書くわけにはいかないのではないかと思います。対象の行だけ書くと、
print('\b' * len(x), end='', flush=True)
となっています。'x'は文字列です。
ちなみにそもそもの目的は、プログラムでコマンドラインに表示した文字を自動で更新していく書き換えることです。(マウスの座標を連続的にコマンドラインに表示するプログラムです。)
自分のパソコンでbackspaceとなるエスケープシーケンスを探してみたいと思います。
また、当初の目的について他の方法があれば、ヒントをくださると大変ありがたいです。