From 31422dd2fcc657757beb37a386f9f2da5c5a8568 Mon Sep 17 00:00:00 2001 From: Egor Tensin Date: Sat, 28 Jan 2017 03:22:36 +0300 Subject: bin.utils.output -> bin.utils.io --- bin/mutual_friends.py | 8 ++++---- bin/online_sessions.py | 10 +++++----- bin/utils/io.py | 43 +++++++++++++++++++++++++++++++++++++++++++ bin/utils/output.py | 43 ------------------------------------------- 4 files changed, 52 insertions(+), 52 deletions(-) create mode 100644 bin/utils/io.py delete mode 100644 bin/utils/output.py diff --git a/bin/mutual_friends.py b/bin/mutual_friends.py index 1d231b0..f67f987 100644 --- a/bin/mutual_friends.py +++ b/bin/mutual_friends.py @@ -12,7 +12,7 @@ import sys from vk.api import API, Language from vk.user import UserField -from .utils import output +from .utils import io _OUTPUT_USER_FIELDS = UserField.UID, UserField.FIRST_NAME, UserField.LAST_NAME @@ -32,7 +32,7 @@ class OutputSinkMutualFriends(metaclass=abc.ABCMeta): class OutputSinkCSV(OutputSinkMutualFriends): def __init__(self, fd=sys.stdout): - self._writer = output.FileWriterCSV(fd) + self._writer = io.FileWriterCSV(fd) def write_mutual_friends(self, friend_list): for user in friend_list: @@ -40,7 +40,7 @@ class OutputSinkCSV(OutputSinkMutualFriends): class OutputSinkJSON(OutputSinkMutualFriends): def __init__(self, fd=sys.stdout): - self._writer = output.FileWriterJSON(fd) + self._writer = io.FileWriterJSON(fd) def write_mutual_friends(self, friend_list): self._writer.write(friend_list) @@ -54,7 +54,7 @@ class OutputFormat(Enum): @staticmethod def open_file(path=None): - return output.open_output_text_file(path) + return io.open_output_text_file(path) def create_sink(self, fd=sys.stdout): if self is OutputFormat.CSV: diff --git a/bin/online_sessions.py b/bin/online_sessions.py index f5707c0..c291fc5 100644 --- a/bin/online_sessions.py +++ b/bin/online_sessions.py @@ -15,7 +15,7 @@ from vk.tracking.db import Format as DatabaseFormat from vk.user import UserField from .utils.bar_chart import BarChartBuilder -from .utils import output +from .utils import io class GroupBy(Enum): USER = 'user' @@ -70,7 +70,7 @@ class OutputConverterCSV: class OutputSinkCSV(OutputSinkOnlineSessions): def __init__(self, fd=sys.stdout): - self._writer = output.FileWriterCSV(fd) + self._writer = io.FileWriterCSV(fd) _CONVERT_KEY = { GroupBy.USER: OutputConverterCSV.convert_user, @@ -127,7 +127,7 @@ class OutputConverterJSON: class OutputSinkJSON(OutputSinkOnlineSessions): def __init__(self, fd=sys.stdout): - self._writer = output.FileWriterJSON(fd) + self._writer = io.FileWriterJSON(fd) _DURATION_FIELD = 'duration' @@ -257,9 +257,9 @@ class OutputFormat(Enum): def open_file(self, path=None): if self is OutputFormat.PLOT: - return output.open_output_binary_file(path) + return io.open_output_binary_file(path) else: - return output.open_output_text_file(path) + return io.open_output_text_file(path) def _parse_group_by(s): try: diff --git a/bin/utils/io.py b/bin/utils/io.py new file mode 100644 index 0000000..70c1a3a --- /dev/null +++ b/bin/utils/io.py @@ -0,0 +1,43 @@ +# Copyright (c) 2017 Egor Tensin +# This file is part of the "VK scripts" project. +# For details, see https://github.com/egor-tensin/vk-scripts. +# Distributed under the MIT License. + +from contextlib import contextmanager +import csv +import json +import sys + +class FileWriterJSON: + def __init__(self, fd=sys.stdout): + self._fd = fd + + def write(self, something): + 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') + + def write_row(self, row): + self._writer.writerow(row) + +@contextmanager +def _open_file(path=None, default=None, **kwargs): + fd = default + if path is None: + pass + else: + fd = open(path, **kwargs) + try: + yield fd + finally: + if fd is not sys.stdout: + fd.close() + +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') diff --git a/bin/utils/output.py b/bin/utils/output.py deleted file mode 100644 index 70c1a3a..0000000 --- a/bin/utils/output.py +++ /dev/null @@ -1,43 +0,0 @@ -# Copyright (c) 2017 Egor Tensin -# This file is part of the "VK scripts" project. -# For details, see https://github.com/egor-tensin/vk-scripts. -# Distributed under the MIT License. - -from contextlib import contextmanager -import csv -import json -import sys - -class FileWriterJSON: - def __init__(self, fd=sys.stdout): - self._fd = fd - - def write(self, something): - 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') - - def write_row(self, row): - self._writer.writerow(row) - -@contextmanager -def _open_file(path=None, default=None, **kwargs): - fd = default - if path is None: - pass - else: - fd = open(path, **kwargs) - try: - yield fd - finally: - if fd is not sys.stdout: - fd.close() - -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') -- cgit v1.2.3