python - 如何在 Python 2 中打印程序工作目录?

标签 python

我正在编写一个 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/

相关文章:

python - 无法在 Fortran 子例程 + 笔记本中更改和返回值

python - 使用 pythongremlin 删除 AWS Neptune 上的所有边

python - 如何从 Pandas 数据帧为 LSTM 模型创建输入样本?

python - 使用 ElementTree 从 XML 中提取数据时出现问题

python - 如何使用 Python 将用户移动到不同的 OU

python - 如何通过 Swig 创建 Python 类的别名?

python - 如何在 python 中使用单个进程扩展 psycopg2 插入和选择?

python - 使用 python 发送电子邮件时出现问题?

php - 在 MySQL 查询之前解码 ISO-8859-1 并编码为 UTF-8

python - Flask:如何管理不同环境的数据库?