我是Linux的新手,并且一直试图解决一项任务,但无济于事。
我有一个shell脚本,它以某种方式打印出文本文件的行(每隔几秒就有一行):
python << END
import time,random
a= open ('/home/ch/pshety/course/fielding_history.txt','r')
flag =False
for i in range(1000):
b=a.readline()
if i==402 or flag:
print(a.readline())
flag=True
time.sleep(2)
END
sh th.sh
如果我在不尝试将其重定向到任何地方的情况下运行它,我会在终端上获得输出。但是,当我尝试将其重定向到新的文本文件时,它没有做任何事情 - 文本仍为空:
sh th.sh > debug.txt
我已经尝试过寻找答案,我偶然发现了很多建议,包括tee
,但没有任何帮助 - 文件仍然是空的。
我做错了什么?
答案 0 :(得分:0)
试试这个:
import time,random
a = open('/home/ch/pshety/course/fielding_history.txt', 'r')
for i in range(1000):
b = a.readline()
if i >= 402:
print(b, flush=True)
time.sleep(2)
您的Python脚本可能需要先刷新输出缓冲区的内容才能看到它。
注意:除了sleep()
调用之外,Unix还提供了其他方法来完成此任务。我会看一下man tail
并阅读有关-f
和-n
开关的内容。
编辑:没有意识到tail
还有一个开关(-s
)也可以睡觉!