'\b'
supprime uniquement lors de l'impression à un terminal (et pas nécessairement tous les terminaux, bien commun * NIX coquillages et cmd.exe
devrait fonctionner). Si la sortie va dans un fichier (ou ailleurs à part un terminal), il va insérer le caractère ASCII retour arrière littéral.
Si vous écrivez à quoi que ce soit, mais un terminal, la meilleure façon de défaire ce que vous avez serait récemment écrit à être seek
en arrière et tronquer loin le bit, vous ne voulez pas, par exemple:
import io
with open(filename, 'wb') as f:
... Do stuff ...
f.write(b'abcdefg')
... Do other stuff that doesn't write to the file ...
# Oh no, it shouldn't be abcdefg, I want xyz
f.seek(-len(b'abcdefg'), io.SEEK_CUR) # Seek back before bit you just wrote
f.truncate() # Remove everything beyond the current file offset
f.write(b'xyz') # Write what you really want
Vous pouvez basculer entre l'écriture de backspaces et la recherche et la tronquage en fonction de la sortie vers un terminal; les objets de type fichier ont le .isatty()
method qui renvoie True
lorsqu'il est connecté à un terminal, et False
sinon. Bien sûr, si vous n'êtes pas connecté à un terminal et que vous n'écrivez pas sur un support de recherche (par exemple, si vous transférez votre programme vers un autre programme), vous êtes bloqué. Une fois que vous avez écrit, c'est fait, vous ne pouvez pas l'annuler dans le cas général (il y a des exceptions impliquant la mise en mémoire tampon, mais elles sont flasques et ne valent pas la peine d'être couvertes).
Dépend. "\ b" supprime un caractère mais dépend de l'endroit où il a été imprimé. Avez-vous un exemple? – Brian