From fae0c8090affe093d2b6f36f94c91152e313184b Mon Sep 17 00:00:00 2001 From: Whyverum Date: Wed, 18 Dec 2024 07:14:56 +0700 Subject: [PATCH] =?UTF-8?q?=D0=A1=D1=87=D0=B5=D1=82=D1=87=D0=B8=D0=BA=20?= =?UTF-8?q?=D1=84=D0=B0=D0=B9=D0=BB=D0=BE=D0=B2=20=D0=B8=20=D1=81=D0=BE?= =?UTF-8?q?=D0=BE=D0=B1=D1=89=D0=B5=D0=BD=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- project_count_line.py | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 project_count_line.py diff --git a/project_count_line.py b/project_count_line.py new file mode 100644 index 0000000..f027ed1 --- /dev/null +++ b/project_count_line.py @@ -0,0 +1,39 @@ +import os + +# Настройка экспорта модулей +__all__ = ("count_lines_in_python_files",) +type_messages = "count_lines_project" + +def count_lines_in_python_files(directory): + total_lines = 0 + total_files = 0 + + # Проходим по всем директориям и файлам в заданной директории + for root, dirs, files in os.walk(directory): + # Исключаем определенные директории + if any(excluded in root for excluded in ['.venv', '.git', '.idea', '__pycache__']): + continue + + for file in files: + if file.endswith('.py'): # Проверяем, что файл имеет расширение .py + total_files += 1 + file_path = os.path.join(root, file) + try: + with open(file_path, 'r', encoding='utf-8') as f: + lines = f.readlines() + total_lines += len(lines) + except UnicodeDecodeError: + # Если файл не может быть прочитан в utf-8, логируем предупреждение и продолжаем + print(f"Предупреждение: невозможно прочитать файл {file_path} из-за ошибки кодировки.") + except Exception as e: + # Логируем любую другую ошибку и продолжаем + print(f"Ошибка при обработке файла {file_path}: {e}") + + return total_lines, total_files + +# Задайте путь к вашей директории +directory_path = r'/' +lines_count, files_count = count_lines_in_python_files(directory_path) + +print(f'Общее количество строк в файлах .py: {lines_count}') +print(f'Общее количество файлов .py: {files_count}')