diff options
author | Ekaitz Zarraga <ekaitz@elenq.tech> | 2021-04-08 19:21:23 +0200 |
---|---|---|
committer | Ekaitz Zarraga <ekaitz@elenq.tech> | 2021-04-08 19:21:23 +0200 |
commit | af13bf2b02503c1af010a4ce3cef22e4efbc4dae (patch) | |
tree | b4c36d3bbe51805e5659589b540b7b8ecba53ec0 /reader.py |
First simple commit
Diffstat (limited to 'reader.py')
-rw-r--r-- | reader.py | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/reader.py b/reader.py new file mode 100644 index 0000000..45d155c --- /dev/null +++ b/reader.py @@ -0,0 +1,34 @@ +class Reader: + def __init__(self, filename): + self.filename = filename + self._file = None + self.lineno = 0 + self.charno = 0 + + def __enter__(self): + self._file = open(self.filename, "r") + return self + + def __exit__(self, type, value, tb): + self._file.close() + + def char(self): + ch = self._file.read(1) + self.charno += 1 + if ch == "\n": + self.lineno += 1 + self.charno = 0 + return ch + + def peek(self): + pos = self._file.tell() + ch = self._file.read(1) + self._file.seek(pos) + return ch + + +if __name__ == "__main__": + with Reader("reader.py") as src: + print(src.peek()) + while src.peek() != "": + print(src.char()) |