#!/usr/bin/python
from subprocess import Popen,PIPE,STDOUT
import optparse,csv,re
def processFile(file,row,lines):
patUser = re.compile('^(User:)\s+(\S+).*$')
patEmail = re.compile('^(Email:)\s+(\S+).*$')
patFName = re.compile('^(FullName:)\s+(.*)$')
fd = open(file,'w')
for eachline in lines:
#return an object for each regex match
vUser = patUser.match(eachline)
vEmail = patEmail.match(eachline)
vFName = patFName.match(eachline)
priority = 0
match = 0
for i,v in enumerate([vUser,vEmail,vFName]):
#print "user: %s, email: %s, fname: %s" % (vUser,vEmail,vFName)
if v is not None:
priority = i
match = 1
if not match:
priority = 99
#print "p: %d",priority
if priority == 99:
fd.write(eachline)
elif priority == 0:
fd.write(eachline.replace(vUser.group(2),row[0]))
print "user: %s, user1: %s" % (vUser.group(2),row[0])
print "priority: %d line: %s" % (priority,eachline)
elif priority == 1:
fd.write(eachline.replace(vEmail.group(2),row[1]))
print "email: %s, email1: %s" % (vEmail.group(2),row[1])
print "priority: %d line: %s" % (priority,eachline)
elif priority == 2:
fd.write(eachline.replace(vFName.group(2),row[2]))
print "fname: %s, fname1: %s" % (vFName.group(2),row[2])
print "priority: %d line: %s" % (priority,eachline)
vUser = None
vEmail = None
vFName = None
fd.close()
return file
def main():
parser = optparse.OptionParser(usage="%prog [-h,-v] csvName userTempl", version="%prog v0.9")
parser.add_option("-v","--verbose",action="store_true",dest="verbose",help="Print debug messages to stdout")
(options,args) = parser.parse_args() #by default sys.argv[1:]
if len(args) != 2:
parser.error("Incorrect number of arguments")
#read a CSV file
file = csv.reader(open(args[0], "r"),delimiter='\n',quoting=csv.QUOTE_NONE)
rlist = []
clist = []
for row in file:
rlist = row[0].split(",")
clist.append(rlist)
p4userOut = ['p4','-u','smoon','-p','20092','user','-i','-f']
lines = open(args[1]).readlines()
for row in clist:
eachFile = processFile(args[1],row,lines)
p1 = Popen(['cat',eachFile],stdout=PIPE)
p2 = Popen(p4userOut,stdin=p1.stdout,stdout=PIPE)
p1.stdout.close()
output = p2.communicate()[0]
#print output
if __name__ == '__main__':
main()