diff options
author | 2023-10-05 19:51:18 +0300 | |
---|---|---|
committer | 2023-10-05 20:24:46 +0300 | |
commit | af4f13a47320e30d45150b5c22eea28104573e09 (patch) | |
tree | 5f6e1cb202565e0fbe27623290afb9149247d0f4 | |
parent | Release 0.8.1 (diff) | |
download | elogv-af4f13a47320e30d45150b5c22eea28104573e09.tar.gz elogv-af4f13a47320e30d45150b5c22eea28104573e09.tar.bz2 elogv-af4f13a47320e30d45150b5c22eea28104573e09.zip |
Open files with same function to allow decompression to work seamlessly
* liblzma left mostly untouched, next commit will port it to lzma.
* BZ2File -> open to allow plaintext reading, which is expected
elsewhere in elogv.
Signed-off-by: Alfred Wingate <parona@protonmail.com>
-rwxr-xr-x | elogv | 22 |
1 files changed, 13 insertions, 9 deletions
@@ -418,18 +418,22 @@ class ElogViewer: self.logf_wrap = self.wrap_logf_lines() self.show_log() - def openfile(self, myfile): - if myfile.endswith('.xz'): + @staticmethod + def open(file, mode='rt'): + if file.endswith('.xz'): if not no_liblzma: - self.logf = liblzma.LZMAFile(myfile) + return liblzma.LZMAFile(file) else: sys.exit('You need pyliblzma library to be able to read xz compressed elog files.\nhttp://pypi.python.org/pypi/pyliblzma') - elif myfile.endswith('.gz'): - self.logf = gzip.open(myfile) - elif myfile.endswith('.bz2'): - self.logf = bz2.BZ2File(myfile) + elif file.endswith('.gz'): + return gzip.open(file, mode=mode) + elif file.endswith('.bz2'): + return bz2.open(file, mode=mode) else: - self.logf = open(myfile) + return open(file, mode=mode) + + def openfile(self, file): + self.logf = self.open(file) def refresh_file_pad(self): """ @@ -528,7 +532,7 @@ class ElogViewer: """ Get the highest elog class in a file """ - with open(filepath) as f: + with self.open(filepath) as f: classes = re.findall("LOG:|INFO:|WARN:|ERROR:", f.read()) if "ERROR:" in classes: |