-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfile_reader.py
40 lines (34 loc) · 1.14 KB
/
file_reader.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# basic file reader with get_char method
class FileReader:
def __init__(self, filepath, line=1, position=0):
self.filepath = filepath
self.file = open(filepath, 'r', encoding='utf-8', errors='replace')
self.line = line
self.position = position
self.absolute_position = position
self.skip_file_header()
# get next char from source
def get_char(self):
self.file.seek(self.absolute_position)
c = self.file.read(1)
self.position += 1
self.absolute_position = self.file.tell()
if c == '\n':
self.line += 1
self.position = 0
return c
def read_graphics_line(self):
self.file.seek(self.absolute_position)
line = self.file.readline()
self.absolute_position = self.file.tell()
self.line += 1
return line
# skip 5 line header of emx file
def skip_file_header(self):
for i in range(5):
line = self.file.readline()
self.absolute_position = self.file.tell()
self.line += 1
# close source file
def close_file(self):
self.file.close()