2017-05-01 58 views
0

我在尋找一種方法來刪除標準輸出由腳本生成的輸出的一部分。我們假設輸出如下:的Python乾淨的輸出控制檯,直至具體線路

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

此時腳本我稱之爲os.system("ls")的,這產生在當前目錄中的文件與我不能預先知道的輸出量清單。因此,標準輸出將更新爲

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行,但我不知道該怎麼做。我已經試圖挽救光標位置在3號線使用轉義\033[s(然後使用\033[K逃避行刪除線),但這不工作(我的系統不支持\033[s)。我能在使用轉義\033[<L>;<C>H線3回,但我不知道如何刪除文本,直到結束(或向後刪除行,直到3號線)。 有人有一個想法如何做到這一點? 任何建議表示讚賞。由於

+0

您試圖移動輸出備份?即打印輸出行1,行2,行3,然後返回行1並打印出其他內容?這在Windows上不起作用,只有某些終端支持特殊字符來實際執行此操作。你可以在窗口上使用\ b在同一行上返回*,但不能倒退。在Windows上的替代方法是清除整個屏幕,但這通常只是打印\ n字符,而不是實際清除終端輸出。 Windows確實也爲高級功能提供了自己的API,但它不是跨平臺的。 – snb

回答

1

而是與終端擺弄的,你可以從標準輸出調用的流程捕捉,打印頭三行到你自己的標準輸出,然後要麼忽略進一步輸出或只是殺死進程。如果真的只是您要執行ls,你會發現glob -module得心應手。

+0

我不確定要了解您的建議。這樣ls的輸出就是「隱藏」的。在這種情況下,這不是我的解決方案。我必須顯示目錄的內容,因爲用戶必須有可能選擇一個文件。之後(所有與列表目錄一致的行都是垃圾)第4行顯示選擇的文件並且腳本與其他輸出一起繼續。 –