我在做os.system
來爲活動文件添加尾部併爲grep
添加一個字符串 如何在grep成功時執行某些操作? 例如在python中從shell命令獲取返回值
cmd= os.system(tail -f file.log | grep -i abc)
if (cmd):
#Do something and continue tail
有沒有什麼辦法可以做到這一點?當os.system語句完成時,它只會到達if
塊。
我在做os.system
來爲活動文件添加尾部併爲grep
添加一個字符串 如何在grep成功時執行某些操作? 例如在python中從shell命令獲取返回值
cmd= os.system(tail -f file.log | grep -i abc)
if (cmd):
#Do something and continue tail
有沒有什麼辦法可以做到這一點?當os.system語句完成時,它只會到達if
塊。
您可以使用subprocess.Popen
和讀取標準輸出線:
import subprocess
def tail(filename):
process = subprocess.Popen(['tail', '-F', filename], stdout=subprocess.PIPE)
while True:
line = process.stdout.readline()
if not line:
process.terminate()
return
yield line
例如:
for line in tail('test.log'):
if line.startswith('error'):
print('Error:', line)
我不知道,你真的需要做到這一點的蟒蛇 - 也許它會更容易地將tail-f
輸出輸出到awk中:https://superuser.com/questions/742238/piping-tail-f-into-awk
如果你想在Python工作(因爲你需要事後做一些處理),然後檢查如何使用tail -f
此鏈接:How can I tail a log file in Python?