-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathoutputs.py
More file actions
58 lines (50 loc) · 2.57 KB
/
outputs.py
File metadata and controls
58 lines (50 loc) · 2.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import csv
import datetime as dt
from prettytable import PrettyTable
from constants import BASE_DIR, DATETIME_FORMAT
def control_output(results, cli_args):
output = cli_args.output
if output == 'pretty':
# Вывод в формате PrettyTable.
pretty_output(results)
elif output == 'file':
file_output(results, cli_args)
else:
# Вывод по умолчанию.
default_output(results)
def default_output(results):
# Печатаем список results построчно.
for row in results:
print(*row)
def pretty_output(results):
# Инициализируем объект PrettyTable.
table = PrettyTable()
# В качестве заголовков устанавливаем первый элемент списка.
table.field_names = results[0]
# Выравниваем всю таблицу по левому краю.
table.align = 'l'
# Добавляем все строки, начиная со второй (с индексом 1).
table.add_rows(results[1:])
# Печатаем таблицу.
print(table)
def file_output(results, cli_args):
results_dir = BASE_DIR / 'results'
results_dir.mkdir(exist_ok=True)
# Получаем режим работы парсера из аргументов командной строки.
parser_mode = cli_args.mode
# Получаем текущие дату и время.
now = dt.datetime.now()
# Сохраняем текущие дату-время в указанном формате.
# Результат будет выглядеть вот так: 2021-06-18_07-40-41.
now_formatted = now.strftime(DATETIME_FORMAT)
# Собираем имя файла из полученных переменных:
# «режим работы программы» + «дата и время записи» + формат (.csv).
file_name = f'{parser_mode}_{now_formatted}.csv'
# Получаем абсолютный путь к файлу с результатами.
file_path = results_dir / file_name
# Через контекстный менеджер открываем файл по сформированному ранее пути
# в режиме записи 'w', в нужной кодировке utf-8.
with open(file_path, 'w', encoding='utf-8') as f:
# Создаём «объект записи» writer.
writer = csv.writer(f, dialect='unix')
writer.writerows(results)