用python观察文件:
#-------- track_file.py --------#
import os
def track_file(path, callback):
""" takes file `path` string and `callback` function.
`callback` called for every line written to file:
callback(path, line)
"""
temp_path = "." + path
os.rename(path, temp_path)
try:
os.mkfifo(path)
pipe = open(path)
origin = open(temp_path, "a")
while 1:
line = pipe.readline()
if not len(line): break
callback(path, line)
origin.write(line)
finally:
try:
os.remove(path)
except OSError: pass
os.rename(temp_path, path)
def do_something(path, line):
# 比如说,打印到标准错误
import sys
print >>sys.stderr, "callback:", line
if __name__ == '__main__':
track_file("my_data.log", do_something)
ng)
可以很容易地扩展这个观察器的使用范围。例如,启动os.system(任何命令),或者统计写日记速率:lines_dict[current_seconds] = lines_dict.get(current_seconds, 0) + 1