| 57 | |
| 58 | |
| 59 | class FilesArray: |
| 60 | def __init__(self, files): |
| 61 | self.files = files |
| 62 | self.empty = set() |
| 63 | self.num_buffers = len(files) |
| 64 | self.buffers = dict.fromkeys(range(self.num_buffers)) |
| 65 | |
| 66 | def get_dict(self): |
| 67 | return { |
| 68 | i: self.buffers[i] for i in range(self.num_buffers) if i not in self.empty |
| 69 | } |
| 70 | |
| 71 | def refresh(self): |
| 72 | for i in range(self.num_buffers): |
| 73 | if self.buffers[i] is None and i not in self.empty: |
| 74 | self.buffers[i] = self.files[i].readline() |
| 75 | |
| 76 | if self.buffers[i] == "": |
| 77 | self.empty.add(i) |
| 78 | self.files[i].close() |
| 79 | |
| 80 | return len(self.empty) != self.num_buffers |
| 81 | |
| 82 | def unshift(self, index): |
| 83 | value = self.buffers[index] |
| 84 | self.buffers[index] = None |
| 85 | |
| 86 | return value |
| 87 | |
| 88 | |
| 89 | class FileMerger: |