簡體   English   中英

sys.stdout.write不grep

[英]sys.stdout.write does not grep

我有一個Python腳本作為啟動腳本寫到屏幕上。 我想監視服務器的進度,因此進入一個循環檢查狀態。 我不想寫下屏幕。 因此,我正在使用sys.stdout.write。 問題是我正在使用的程序(wlst Weblogic)打印所有我不想顯示的日志。 我通過使用grep和僅打印以空格開頭的行來解決此問題。

我有這個功能

def printRoll():
   print ' Is my Print working'
   myTest = ' Hello'
   myTest1 = 'test 123'
   sys.stdout.write("\r %s " % myTest)
   sys.stdout.flush()
   systime.sleep(10)
   sys.stdout.write("\r  %s " % myTest1)
   sys.stdout.flush()
   systime.sleep(10)

我要顯示的是:

 Is my Print working
 Hello

然后10秒鍾后,您好已寫滿

 test 123

如果我運行grep命令

python 'printRoll()' | grep '^[[:space:]]\{1\}[A-Za-z0-9]' --line-buffered 

它只打印第一行

Is my Print working

它不會打印任何sys.stdout.write行。 我認為這是緩沖問題,但我找不到我的問題的例子。

python腳本可以按預期工作,但是它還包含許多其他我不想打印到屏幕上的信息。

任何幫助表示贊賞。

我相信它是Python的舊版本,即2.7

詹姆斯歡呼

問題是其他的線都沒有新盡可能grep而言,既然你是不是輸出\\n換行符。

grep看到的是–該輸出通過xxd進行十六進制轉儲,因此我們可以看到所有字符–以下。 0a (在轉儲的第二行)是換行符。 您可以看到之后沒有更多的換行符( 0a ),因此grep不再需要將輸入切成行。

00000000: 2049 7320 6d79 2050 7269 6e74 2077 6f72   Is my Print wor
00000010: 6b69 6e67 0a0d 2020 4865 6c6c 6f20 0d20  king..  Hello . 
00000020: 2074 6573 7420 3132 3320                  test 123 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM