diff options
Diffstat (limited to 'bin/utils/io.py')
-rw-r--r-- | bin/utils/io.py | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/bin/utils/io.py b/bin/utils/io.py index 04baa6a..bb8eef9 100644 --- a/bin/utils/io.py +++ b/bin/utils/io.py @@ -8,6 +8,7 @@ import csv import json import sys + class FileWriterJSON: def __init__(self, fd=sys.stdout): self._fd = fd @@ -16,13 +17,14 @@ class FileWriterJSON: self._fd.write(json.dumps(something, indent=3, ensure_ascii=False)) self._fd.write('\n') + class FileWriterCSV: def __init__(self, fd=sys.stdout): self._writer = csv.writer(fd, lineterminator='\n') @staticmethod def _convert_row_old_python(row): - if isinstance(row, list) or isinstance(row, tuple): + if isinstance(row, (list, tuple)): return row return list(row) @@ -31,6 +33,7 @@ class FileWriterCSV: row = self._convert_row_old_python(row) self._writer.writerow(row) + @contextmanager def _open_file(path=None, default=None, **kwargs): if path is None: @@ -39,8 +42,10 @@ def _open_file(path=None, default=None, **kwargs): with open(path, **kwargs) as fd: yield fd + def open_output_text_file(path=None): return _open_file(path, default=sys.stdout, mode='w', encoding='utf-8') + def open_output_binary_file(path=None): return _open_file(path, default=sys.stdout, mode='wb') |