DrugDesign Data Analysis
https://gitlab.com/UmbrellaLeaf5/drugdesign_parsing
Loading...
Searching...
No Matches
file_and_logger_funcs Namespace Reference

Functions

None CombineCSVInFolder (str folder_name, str combined_file_name, str logger_label="ChEMBL__combine", bool print_to_console=False, bool skip_downloaded_files=False)
 
None CreateFolder (str folder_name, str folder_name_for_log="")
 
None DeleteFilesInFolder (str folder_name, list[str] except_files=[])
 
bool IsFileInFolder (str folder_name, str file_name)
 
None PrintException (Exception exception, str logger_label, str color, str file_name="exceptions.log")
 
None UpdateLoggerFormat (str logger_label, str color, TextIO|TextIOWrapper out=sys.stdout)
 

Function Documentation

◆ CombineCSVInFolder()

None file_and_logger_funcs.CombineCSVInFolder ( str folder_name,
str combined_file_name,
str logger_label = "ChEMBL__combine",
bool print_to_console = False,
bool skip_downloaded_files = False )
Склеивает все .csv файлы в папке в один

Args:
    folder_name (str): имя папки с .csv файлами
    combined_file_name (str): имя склеенного .csv файла
    logger_label (str, optional): текст заголовка для логирования. Defaults to "ChEMBL__combine".
    print_to_console (bool, optional): нужно ли выводить логирование в консоль. Defaults to False.
72 skip_downloaded_files: bool = False) -> None:
73 """
74 Склеивает все .csv файлы в папке в один
75
76 Args:
77 folder_name (str): имя папки с .csv файлами
78 combined_file_name (str): имя склеенного .csv файла
79 logger_label (str, optional): текст заголовка для логирования. Defaults to "ChEMBL__combine".
80 print_to_console (bool, optional): нужно ли выводить логирование в консоль. Defaults to False.
81 """
82
83 UpdateLoggerFormat(logger_label, "fg #474747")
84
85 logger.info(f"Start combining all downloads...".ljust(77))
86 logger.info(f"{'-' * 77}")
87
88 if IsFileInFolder(folder_name, f"{combined_file_name}.csv") and skip_downloaded_files:
89 logger.warning(
90 f"File '{combined_file_name}' is in folder, no need to combine".ljust(77))
91 return
92
93 combined_df = pd.DataFrame()
94
95 for file_name in os.listdir(folder_name):
96 if file_name.endswith('.csv') and file_name != f"{combined_file_name}.csv":
97
98 if print_to_console:
99 logger.info(f"Opening '{file_name}'...".ljust(77))
100
101 full_file_name: str = os.path.join(folder_name, file_name)
102
103 if print_to_console:
104 logger.success(f"Opening '{file_name}': SUCCESS".ljust(77))
105
106 logger.info(
107 f"Collecting '{file_name}' to pandas.DataFrame()...".ljust(77))
108 try:
109 df = pd.read_csv(full_file_name, sep=';', low_memory=False)
110
111 if print_to_console:
112 logger.success(
113 f"Collecting '{file_name}' to pandas.DataFrame(): SUCCESS".ljust(77))
114
115 logger.info(
116 f"Concatenating '{file_name}' to combined_data_frame...".ljust(77))
117
118 combined_df = pd.concat([combined_df, df], ignore_index=True)
119
120 if print_to_console:
121 logger.success(
122 f"Concatenating '{file_name}' to combined_data_frame: SUCCESS".ljust(77))
123
124 except Exception as exception:
125 PrintException(exception, logger_label, "fg #474747")
126
127 if print_to_console:
128 logger.info(f"{'-' * 77}")
129
130 logger.info(
131 f"Collecting to combined .csv file in '{folder_name}'...".ljust(77))
132 try:
133 combined_df.to_csv(
134 f"{folder_name}/{combined_file_name}.csv", sep=';', index=False)
135 logger.success(
136 f"Collecting to combined .csv file in '{folder_name}': SUCCESS".ljust(77))
137
138 except Exception as exception:
139 PrintException(exception, logger_label, "fg #474747")
140
141 logger.info(f"{'-' * 77}")
142 logger.success(f"End combining all downloads".ljust(77))
143
144
Here is the call graph for this function:

◆ CreateFolder()

None file_and_logger_funcs.CreateFolder ( str folder_name,
str folder_name_for_log = "" )
Создает папку, использует логирование
(в случае исключения также выводит об этом в консоль)

Args:
    folder_name (str): путь к папке.
    folder_name_for_log (str, optional): имя папки (для логирования). Defaults to "": имя будет идентично folder_name.
44def CreateFolder(folder_name: str, folder_name_for_log: str = "") -> None:
45 """
46 Создает папку, использует логирование
47 (в случае исключения также выводит об этом в консоль)
48
49 Args:
50 folder_name (str): путь к папке.
51 folder_name_for_log (str, optional): имя папки (для логирования). Defaults to "": имя будет идентично folder_name.
52 """
53
54 if folder_name_for_log == "":
55 folder_name_for_log = folder_name
56
57 try:
58 if not os.path.exists(folder_name):
59 logger.info(f"Creating folder '{
60 folder_name_for_log}'...".ljust(77))
61 os.mkdir(folder_name)
62 logger.success(f"Creating folder '{
63 folder_name_for_log}': SUCCESS".ljust(77))
64
65 except Exception as exception:
66 logger.warning(f"{exception}".ljust(77))
67
68

◆ DeleteFilesInFolder()

None file_and_logger_funcs.DeleteFilesInFolder ( str folder_name,
list[str] except_files = [] )
Удаляет все файлы в указанной папке, кроме файлов в списке исключений.

Args:
  folder_name (str): путь к папке.
  except_files (list[str], optional): список имен файлов, которые нужно исключить из удаления. Defaults to [].
12def DeleteFilesInFolder(folder_name: str, except_files: list[str] = []) -> None:
13 """
14 Удаляет все файлы в указанной папке, кроме файлов в списке исключений.
15
16 Args:
17 folder_name (str): путь к папке.
18 except_files (list[str], optional): список имен файлов, которые нужно исключить из удаления. Defaults to [].
19 """
20
21 for file_name in os.listdir(folder_name):
22 full_file_name = os.path.join(folder_name, file_name)
23
24 if os.path.isfile(full_file_name) and file_name not in except_files:
25 os.remove(full_file_name)
26
27

◆ IsFileInFolder()

bool file_and_logger_funcs.IsFileInFolder ( str folder_name,
str file_name )
Проверяет, существует ли файл в указанной папке.

Args:
  file_name: путь к файлу, который нужно проверить.
  folder_name: путь к папке, в которой нужно проверить наличие файла.

Returns:
  True, если файл существует в папке, в противном случае False.
28def IsFileInFolder(folder_name: str, file_name: str) -> bool:
29 """
30 Проверяет, существует ли файл в указанной папке.
31
32 Args:
33 file_name: путь к файлу, который нужно проверить.
34 folder_name: путь к папке, в которой нужно проверить наличие файла.
35
36 Returns:
37 True, если файл существует в папке, в противном случае False.
38 """
39
40 full_file_name = os.path.join(folder_name, file_name)
41 return os.path.exists(full_file_name)
42
43
Here is the caller graph for this function:

◆ PrintException()

None file_and_logger_funcs.PrintException ( Exception exception,
str logger_label,
str color,
str file_name = "exceptions.log" )
Выводит исключение в консоль и записывает в файл.

Args:
    exception (Exception): исключение
    logger_label (str): текст заголовка для логирования
    color (str): цвет заголовка для логирования
    file_name (str, optional): имя файла. Defaults to "exceptions.log".
165 file_name: str = "exceptions.log") -> None:
166 """
167 Выводит исключение в консоль и записывает в файл.
168
169 Args:
170 exception (Exception): исключение
171 logger_label (str): текст заголовка для логирования
172 color (str): цвет заголовка для логирования
173 file_name (str, optional): имя файла. Defaults to "exceptions.log".
174 """
175
176 logger.error(f"{exception}".ljust(77))
177
178 with open(file_name, 'a', encoding='utf-8') as f:
179 UpdateLoggerFormat(logger_label, color, f)
180
181 logger.error(
182 f"{re.sub(r'"(.*?)\",\s+line\s+(\d+)', r'\1:\2', traceback.format_exc())}")
183
184 UpdateLoggerFormat(logger_label, color)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ UpdateLoggerFormat()

None file_and_logger_funcs.UpdateLoggerFormat ( str logger_label,
str color,
TextIO | TextIOWrapper out = sys.stdout )
Обновляет формат вывода логирования

Args:
    logger_label (str): текст заголовка для логирования
    color (str): цвет заголовка для логирования
    out (TextIO | TextIOWrapper, optional): способ вывода. Defaults to sys.stdout.
146 out: TextIO | TextIOWrapper = sys.stdout) -> None:
147 """
148 Обновляет формат вывода логирования
149
150 Args:
151 logger_label (str): текст заголовка для логирования
152 color (str): цвет заголовка для логирования
153 out (TextIO | TextIOWrapper, optional): способ вывода. Defaults to sys.stdout.
154 """
155
156 logger.remove()
157 logger.add(sink=out,
158 format="[{time:DD.MM.YYYY HH:mm:ss}]" +
159 f" <{color}>{logger_label}:</{color}>" +
160 " <white>{message}</white>" +
161 " [<level>{level}</level>]")
162
163
Here is the caller graph for this function: