This media is not supported in your browser
VIEW IN TELEGRAM
✄┈┈┈┈┈┈┈┈┈┈┈┈┈
Заметки программиста
«(!?»Please open Telegram to view this post
VIEW IN TELEGRAM
✄┈┈┈┈┈┈┈┈┈┈┈┈┈
Заметки программиста
«(!?»Please open Telegram to view this post
VIEW IN TELEGRAM
— Ты почему всё время на Python пишешь?
— Ну, мне сказали: «Тебе стоит попробовать Python, бро».
— И что?
— А я попробовал… Теперь tuple не изменить, list не остановить, а от indentation error спасает только кофе!
✄┈┈┈┈┈┈┈┈┈┈┈┈┈
Заметки программиста
«(!?»Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Для работы понадобятся две библиотеки: pdfplumber и gTTS.
Установка библиотеки:
pip install pdfplumber
Б
иблиотека gTTS применяется для преобразования текста в речь, использующая API Google. Она позволяет создавать аудиофайлы в различных языках (включая русский).Установка библиотеки:
pip install gTTS
✄┈┈┈┈┈┈┈┈┈┈┈┈┈
Заметки программиста
«(!?»Please open Telegram to view this post
VIEW IN TELEGRAM
Варианты ответа:
Anonymous Quiz
27%
True True
28%
True False
15%
False True
14%
False False
16%
Ошибка None
# Импорт модуля для выполнения системных команд
import subprocess
# Получаем метаданные о Wi-Fi профилях с помощью команды netsh
meta_data = subprocess.check_output(['netsh', 'wlan', 'show', 'profiles'])
# Декодируем полученные данные из байтов в строку UTF-8, заменяя ошибки символами \
data = meta_data.decode('utf-8', errors="backslashreplace")
# Разделяем данные по строкам
data = data.split('\n')
# Создаем список для хранения имен Wi-Fi профилей
profiles = []
# Перебираем каждую строку в данных
for line in data:
# Ищем строки, содержащие "All User Profile" (имена Wi-Fi сетей)
if "All User Profile" in line:
# Разделяем строку по двоеточию
parts = line.split(":")
# Берем вторую часть (имя профиля)
profile_name = parts[1]
# Удаляем лишние пробелы и кавычки вокруг имени
profile_name = profile_name.strip()[1:-1]
# Добавляем имя профиля в список
profiles.append(profile_name)
# Выводим заголовок таблицы
print("{:<30}| {:<}".format("Имя Wi-Fi", "Пароль"))
print("----------------------------------------------")
# Перебираем все найденные профили Wi-Fi
for profile in profiles:
try:
# Пытаемся получить информацию о профиле, включая пароль
results = subprocess.check_output(['netsh', 'wlan', 'show', 'profile', profile, 'key=clear'])
# Декодируем и разделяем результат по строкам
results = results.decode('utf-8', errors="backslashreplace")
results = results.split('\n')
# Ищем строку с содержимым ключа (паролем)
password_lines = [line.split(":")[1].strip()[1:-1] for line in results if "Key Content" in line]
# Если пароль найден, выводим его
try:
print("{:<30}| {:<}".format(profile, password_lines[0]))
# Если пароль не найден, выводим пустое поле
except IndexError:
print("{:<30}| {:<}".format(profile, ""))
# Обрабатываем ошибку, если команда не выполнилась
except subprocess.CalledProcessError:
print("{:<30}| {:<}".format(profile, "Ошибка получения данных"))
Важные нюансы:
✄┈┈┈┈┈┈┈┈┈┈┈┈┈
Заметки программиста
«(!?»Please open Telegram to view this post
VIEW IN TELEGRAM
Это полезно, потому что сразу видно, откуда берется функция, и это помогает избежать конфликтов имен.
Кроме того, становится менее понятно, откуда взята функция.
✄┈┈┈┈┈┈┈┈┈┈┈┈┈
Заметки программиста
«(!?»Please open Telegram to view this post
VIEW IN TELEGRAM
✄┈┈┈┈┈┈┈┈┈┈┈┈┈
Заметки программиста
«(!?»Please open Telegram to view this post
VIEW IN TELEGRAM