aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/vk/utils/io.py
diff options
context:
space:
mode:
authorEgor Tensin <Egor.Tensin@gmail.com>2021-05-03 22:09:09 +0300
committerEgor Tensin <Egor.Tensin@gmail.com>2021-05-03 22:11:53 +0300
commite5459ab1c8fb4250f30c4663aa797e6f1de22ab3 (patch)
treed7c27133aad96c285adb3f53b41d5a3256f43c31 /vk/utils/io.py
parentpylint: unignore "duplicate code" warnings (diff)
downloadvk-scripts-e5459ab1c8fb4250f30c4663aa797e6f1de22ab3.tar.gz
vk-scripts-e5459ab1c8fb4250f30c4663aa797e6f1de22ab3.zip
vk.tracking: merge db.io to utils.io
Diffstat (limited to 'vk/utils/io.py')
-rw-r--r--vk/utils/io.py27
1 files changed, 24 insertions, 3 deletions
diff --git a/vk/utils/io.py b/vk/utils/io.py
index bb8eef9..eccb726 100644
--- a/vk/utils/io.py
+++ b/vk/utils/io.py
@@ -18,9 +18,19 @@ class FileWriterJSON:
self._fd.write('\n')
+class FileReaderCSV:
+ def __init__(self, fd=sys.stdin):
+ self._reader = csv.reader(fd)
+
+ def __iter__(self):
+ return iter(self._reader)
+
+
class FileWriterCSV:
- def __init__(self, fd=sys.stdout):
+ def __init__(self, fd=sys.stdout, flush=False):
+ self._fd = fd
self._writer = csv.writer(fd, lineterminator='\n')
+ self._flush = flush
@staticmethod
def _convert_row_old_python(row):
@@ -32,6 +42,8 @@ class FileWriterCSV:
if sys.version_info < (3, 5):
row = self._convert_row_old_python(row)
self._writer.writerow(row)
+ if self._flush:
+ self._fd.flush()
@contextmanager
@@ -43,8 +55,17 @@ def _open_file(path=None, default=None, **kwargs):
yield fd
-def open_output_text_file(path=None):
- return _open_file(path, default=sys.stdout, mode='w', encoding='utf-8')
+_DEFAULT_ENCODING = 'utf-8'
+
+
+def open_input_text_file(path=None):
+ return _open_file(path, default=sys.stdin, mode='r',
+ encoding=_DEFAULT_ENCODING)
+
+
+def open_output_text_file(path=None, mode='w'):
+ return _open_file(path, default=sys.stdout, mode=mode,
+ encoding=_DEFAULT_ENCODING)
def open_output_binary_file(path=None):