所以我一直试图找到答案,包括搜索StackOverflow,到目前为止我找到的所有解决方案都没有用。
一些背景知识:我的代码读入文件并对每个单词做一些事情。代码本身有效,我只是想让输出格式化。具体来说,我的意图是当我运行脚本时,它应该打印一行“当前单词:[x]”,其中[x]是当时正在处理的单词。它应该反复覆盖自己以在同一行上显示每个单词,而不是分别打印每一行。基本上,它应该是一个文本进度条。
我知道\ r \ n,回车符,它应该将光标发送回行的开头。目前,我不能使用print()或sys.stdout.write()调用的任何组合来避免换行,无论我尝试什么:
1,根据https://stackoverflow.com/a/20980840/6767203:
print("\rCurrent Word: " + currentWord, end="")
2:
print("Current Word: " + currentWord, end="\r")
3,因为我认为可能包含在单个字符串中的所有内容可能有所帮助(并且它的格式为this answer):
print("\rCurrent Word: {0}".format(currentWord), end="")
4,根据https://stackoverflow.com/a/11018255/6767203:
import sys
[...]
sys.stdout.write("\rCurrent Word: {0}".format(currentWord))
sys.stdout.flush() #tried with and without this
5,根据https://stackoverflow.com/a/11076668/6767203:
import sys, os
[...]
sys.stdout = os.fdopen(sys.stdout.fileno(), "w", newline=None)
[...]
print("\rCurrent Word: {0}".format(currentWord))
# tried all the previous print()s and sys.stdout.write()s, too
这些都不会产生错误,但所有错误都无法移除换行符,从而导致大量的行被打印到屏幕上。 (我认为其中一些可能导致两行;我尝试了很多东西,而且我忘记了每个变体的确切输出。)
我做了一些游戏,
sys.stdout.write("Current \rWord: {0}".format(currentWord))
将光标向左移动,如预期的那样,导致“Word:[x]”(并经常出现一些错误) - 它也会打印换行符。
我正在将脚本编写为'script.py',然后在终端窗口中
chmod 777 script.py
./script.py
与
#!/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5
在顶部。我也在运行Mac OS X 10.9.5,如果这有所不同。