[Assorted-commits] SF.net SVN: assorted:[1247] sandbox/trunk/src/one-off-scripts
Brought to you by:
yangzhang
From: <yan...@us...> - 2009-03-04 19:37:50
|
Revision: 1247 http://assorted.svn.sourceforge.net/assorted/?rev=1247&view=rev Author: yangzhang Date: 2009-03-04 19:37:48 +0000 (Wed, 04 Mar 2009) Log Message: ----------- added program to merge xchat logs Added Paths: ----------- sandbox/trunk/src/one-off-scripts/merge-xchatlogs/ sandbox/trunk/src/one-off-scripts/merge-xchatlogs/merge.py Added: sandbox/trunk/src/one-off-scripts/merge-xchatlogs/merge.py =================================================================== --- sandbox/trunk/src/one-off-scripts/merge-xchatlogs/merge.py (rev 0) +++ sandbox/trunk/src/one-off-scripts/merge-xchatlogs/merge.py 2009-03-04 19:37:48 UTC (rev 1247) @@ -0,0 +1,41 @@ +#!/usr/bin/env python + +from __future__ import with_statement +from path import path +import os.path as pth +import sys, time, re + +src, dst, stage = map(path, sys.argv[1:]) +print 'staging' +dst.copytree(stage) + +print 'new' +new = set(map(path.basename, src.files())) - set(map(path.basename, dst.files())) +news = 0 +for p in new: + path(src / p).copy(stage / p) + news += 1 +print news + +print 'updates' +upd = set(map(path.basename, src.files())) & set(map(path.basename, dst.files())) +pat = re.compile(r' LOGGING AT (.*)\n$') +def findtime(lines): + for line in lines: + m = pat.search(line) + if m: + try: return time.strptime(m.group(1).rstrip()) + except: print >> sys.stderr, repr(line), repr(m.group(1)); raise + return None +upds = 0 +for p in upd: + with file(src / p) as f: tsrc = findtime(reversed(f.readlines())) + with file(dst / p) as f: tdst = findtime(f) + if tsrc is None or tdst is None: tsrc = tdst = None + if tsrc < tdst: + (src / p).copy(stage / p) + with file(dst / p) as g: cnt = g.read() + with file(stage / p, 'a') as f: f.write(cnt) + upds += 1 + else: print ' ', p +print upds Property changes on: sandbox/trunk/src/one-off-scripts/merge-xchatlogs/merge.py ___________________________________________________________________ Added: svn:executable + * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |