Python清理输出控制台直到特定行

时间:2017-05-01 15:43:21

标签: python stdout

我正在搜索删除stdout中脚本生成的部分输出的方法。我们假设输出如下:

line 1: some text...
line 2: other text...
line 3: and so on...

在脚本的这一点上,我调用os.system("ls"),这将生成当前目录中的文件列表,其中包含我无法提前知道的输出量。因此,stdout将更新为

line 1: some text...
line 2: other text...
line 3: and so on...
line 4: file1
line 5: file 2
...
line n: file n

我想通过第3行到第n行清理标准输出但我不知道该怎么做。我已经尝试使用转义\033[s在第3行保存光标位置(然后使用\033[K转义逐行删除)但这不起作用(我的系统没有&#39} ; t支持\033[s)。我可以使用转义\033[<L>;<C>H在第3行返回,但我不知道如何删除文本直到结束(或向后删除行直到第3行)。 有人知道怎么做吗? 任何建议表示赞赏。感谢

1 个答案:

答案 0 :(得分:1)

您可以从被调用的进程捕获stdout,将前三行打印到您自己的stdout,然后忽略进一步的输出或者只是终止进程,而不是摆弄终端。如果它只是ls你正在执行,你可能会找到glob - 模块。