def replace_phrase(self, target_phrase, desired_phrase): f = File(self.filename) dummy = File('dummy.txt') target_len = len(target_phrase)-1 for line in f._parse(): dummy.skipline_if_written() index = -1 wait = 0 matched = True for char in line: index += 1 write = False if wait == 0: if char == target_phrase[0]: if index + target_len > len(line): matched = False else: mod = -1 for test_char in target_phrase: mod += 1 if line[index+mod] == test_char: continue else: matched = False break if matched == False: write = True else: dummy._write(desired_phrase) wait = target_len else: write = True if write == True: dummy._write(char) else: wait -= 1 f._delete() dummy._rename(self.filename)
def cleanup_elevations(self): total_entries = self.raw_elevationfile.get_total_entries() p = Progress(total_entries, 'Getting high...') dummymap = File('dummy') if dummymap.written == True: dummymap._delete() elevationMEMORY = {} memCOUNT = 0 for strcoord, floatelevation in self.raw_elevationfile.parse(): p.update() coord = self.str2coord(strcoord) # elevation = int(round(float(floatelevation), 0)) if elevation > 9: elevation = 9 elif elevation < 0: elevation = 0 else: pass elevationMEMORY[coord] = elevation memCOUNT += 1 if memCOUNT > self.memLIMIT or p.progress == total_entries: if self.elevationfile.written == False: for y in range(self.map_size[1]): self.elevationfile.skipline_if_written() for x in range(self.map_size[0]): try: elevation = elevationMEMORY[(x, y)] except KeyError: elevation = 0 self.elevationfile._write(str(elevation)) else: y = -1 for line in self.elevationfile._parse(): dummymap.skipline_if_written() y += 1 x = -1 for char in line: x += 1 if char != '0': dummymap._write(char) else: try: elevation = elevationMEMORY[(x, y)] except KeyError: elevation = 0 dummymap._write(str(elevation)) self.elevationfile._delete() dummymap._rename(self.elevationfile.filename) self.elevationfile = dummymap dummymap = File('dummy') elevationMEMORY = {} memCOUNT = 0 else: continue p.close()