def splittjobfile(jobfile, jobfiles, ignorejobsidentifier=False): root = XmlParser(jobfile) numberofjobs = 0 ignoredjobs = 0 for entry in root.iter('job'): if ignorejobsidentifier != False: status = entry.find("status").text if status in ignorejobsidentifier: root.remove(entry) ignoredjobs += 1 continue numberofjobs += 1 print "Found {} jobs in in file {}".format(numberofjobs, jobfile) if ignorejobsidentifier != False: if type(ignorejobsidentifier) == str: ignorejobsidentifier = [ignorejobsidentifier] print "which are not of type:{}".format(" ".join(ignorejobsidentifier)) print "Ignored jobs: {}".format(ignoredjobs) numberoffiles = len(jobfiles) jobsperfile = numberofjobs / numberoffiles remaining = numberofjobs % numberoffiles jobsperfilelist = [] roots = [] for i in range(numberoffiles): roots.append(lxml.Element("jobs")) if remaining > 0: jobsperfilelist.append(jobsperfile + 1) remaining -= 1 else: jobsperfilelist.append(jobsperfile) i = 0 j = 1 for entry in root.iter('job'): if j > jobsperfilelist[i]: i += 1 j = 1 j += 1 roots[i].append(entry) print "Split up jobfile into {} files with".format(numberoffiles) print "with: {} jobs each".format(" ".join(map(str, jobsperfilelist))) for outputfile, root in zip(jobfiles, roots): XmlWriter(root, outputfile)
def splittjobfile(jobfile,jobfiles,ignorejobsidentifier=False): root=XmlParser(jobfile) numberofjobs=0 ignoredjobs=0 for entry in root.iter('job'): if ignorejobsidentifier!=False: status=entry.find("status").text if status in ignorejobsidentifier: root.remove(entry) ignoredjobs+=1 continue numberofjobs+=1 print "Found {} jobs in in file {}".format(numberofjobs,jobfile) if ignorejobsidentifier!=False: if type(ignorejobsidentifier)==str: ignorejobsidentifier=[ignorejobsidentifier] print "which are not of type:{}".format(" ".join(ignorejobsidentifier)) print "Ignored jobs: {}".format(ignoredjobs) numberoffiles=len(jobfiles) jobsperfile=numberofjobs/numberoffiles remaining=numberofjobs%numberoffiles jobsperfilelist=[] roots=[] for i in range(numberoffiles): roots.append(lxml.Element("jobs")) if remaining>0: jobsperfilelist.append(jobsperfile+1) remaining-=1 else: jobsperfilelist.append(jobsperfile) i=0 j=1 for entry in root.iter('job'): if j>jobsperfilelist[i]: i+=1 j=1 j+=1 roots[i].append(entry) print "Split up jobfile into {} files with".format(numberoffiles) print "with: {} jobs each".format(" ".join(map(str,jobsperfilelist))) for outputfile,root in zip(jobfiles,roots): XmlWriter(root,outputfile)
from __tools__ import MyParser from __tools__ import XmlParser from __tools__ import XmlWriter import lxml.etree as lxml parser = MyParser(description="Delete Entries from Jobfile") parser.add_argument("--jobfile", "-j", type=str, required=True, help="jobfile") parser.add_argument("--output", "-o", type=str, default="joboutput.xml", help="jobfile") parser.add_argument("--exclude", type=str, nargs="+", help="Tags to exclude from jobfile e,h,n,s,t") args = parser.parse_args() print "Removing states with tags including: {} ".format(" ".join(args.exclude)) root = XmlParser(args.jobfile) for entry in root.iter('job'): status = entry.find("tag").text for eex in args.exclude: if eex in status: root.remove(entry) break print "Writing to {}".format(args.output) XmlWriter(root, args.output)