40 lines
1.9 KiB
Python
40 lines
1.9 KiB
Python
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}')
|