diff options
| author | makefu <github@syntax-fehler.de> | 2011-11-04 14:27:34 +0100 | 
|---|---|---|
| committer | makefu <github@syntax-fehler.de> | 2011-11-04 14:27:34 +0100 | 
| commit | 193eaae037623b8843449114a22fc9a25778bcc5 (patch) | |
| tree | f2a441bd2f2d57b9885b75c8368e0cb0719901e5 /retiolum/scripts/adv_graphgen | |
| parent | 0ed905da208ff9eed13878485325ea26ae2e2c8f (diff) | |
//retiolum/adv_graphgen: add BackwardsReader
dependency for tinc_stats.py
Diffstat (limited to 'retiolum/scripts/adv_graphgen')
| -rw-r--r-- | retiolum/scripts/adv_graphgen/BackwardsReader.py | 35 | 
1 files changed, 35 insertions, 0 deletions
| diff --git a/retiolum/scripts/adv_graphgen/BackwardsReader.py b/retiolum/scripts/adv_graphgen/BackwardsReader.py new file mode 100644 index 00000000..6bdbf43c --- /dev/null +++ b/retiolum/scripts/adv_graphgen/BackwardsReader.py @@ -0,0 +1,35 @@ +import sys +import os +import string + +class BackwardsReader: +  """ Stripped and stolen from : http://code.activestate.com/recipes/120686-read-a-text-file-backwards/ """ +  def readline(self): +    while len(self.data) == 1 and ((self.blkcount * self.blksize) < self.size): +      self.blkcount = self.blkcount + 1 +      line = self.data[0] +      try: +        self.f.seek(-self.blksize * self.blkcount, 2)  +        self.data = string.split(self.f.read(self.blksize) + line, '\n') +      except IOError:   +        self.f.seek(0) +        self.data = string.split(self.f.read(self.size - (self.blksize * (self.blkcount-1))) + line, '\n') + +    if len(self.data) == 0: +      return "" + +    line = self.data[-1] +    self.data = self.data[:-1] +    return line + '\n' + +  def __init__(self, file, blksize=4096): +    """initialize the internal structures""" +    self.size = os.stat(file)[6] +    self.blksize = blksize +    self.blkcount = 1 +    self.f = open(file, 'rb') +    if self.size > self.blksize: +      self.f.seek(-self.blksize * self.blkcount, 2)  +    self.data = string.split(self.f.read(self.blksize), '\n') +    if not self.data[-1]: +      self.data = self.data[:-1] | 
