我有一个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
欢呼 詹姆斯
答案 0 :(得分:1)
问题是,就您SORT BY FIELD(
而言,其他行不是新的行,因为您没有输出, 'XS', 'S', 'M', 'L')
换行符。
grep看到的是–此输出通过grep
进行十六进制转储,因此我们可以看到所有字符-以下内容。 \n
(在转储的第二行)是换行符。您可以看到之后没有更多的换行符(xxd
s),因此0a
可以将输入切成行了。
0a