我正在编写一个 Python 2 程序来查找文件。这个程序应该在每次搜索迭代时打印它搜索的每个目录,但总是打印到终端中的同一行(即通过删除已经存在的文本并将光标移动到行的开头,然后再次打印。)
这是我目前的代码:
import os
import sys
for root, dirs, files in os.walk("/"):
print root +'\r',
print '\x1b[2K\r',
我的问题是它在一个新行上开始每个打印输出(当它改变目录时);换句话说,它不会重用旧行。
如何确保所有打印输出都在终端中显示为一行?
最佳答案
您需要刷新 stdout
缓冲区(取决于终端系统),并用空格填充该行。例如:
for root, dirs, files in os.walk(path):
print "%-80s\r" % (root),
sys.stdout.flush()
time.sleep(1) # For testing
这假定任意最大文件名长度为 80 个字符。
编辑:
这个新的解决方案使用 curses,它是标准库的一部分:
import curses
import os
import time
win = curses.initscr()
for root, dirs, files in os.walk(path):
win.clear()
win.addstr(0, 0, root)
win.refresh()
time.sleep(1) # For testing purposes
curses.endwin()
关于python - 如何在 Python 2 中打印程序工作目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32007487/