[英]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.