Python для новичков (@pythonvideo) Kanalının Son Gönderileri

Python для новичков Telegram Gönderileri

Python для новичков
Админ: @solkogan
Купить рекламу: https://telega.in/c/pythonvideo
6,417 Abone
255 Fotoğraf
15 Video
Son Güncelleme 27.02.2025 08:32

Python для новичков tarafından Telegram'da paylaşılan en son içerikler


🔵 Практический интенсив «Python-разработчик: основы за 2 дня» — 23-24 октября в 19:00 мск.

О перспективах направления Python и многом другом расскажет Рафаэль Мухаметшин, Middle Бэкенд-разработчик в «ПИК Digital» с опытом в разработке более 3 лет.

На вебинаре вы:

☑️ Самостоятельно напишете Telegram-бота с карточными мини-играми.
☑️ Познакомитесь с синтаксисом языка и сферами его применения.
☑️ Поймете как продолжить обучение, какие навыки потребуются, чтобы стать backend-разработчиком на Python.
☑️ Узнаете, чего ждут работодатели от junior-разработчиков и что делать, чтобы найти работу без опыта.

🎁 Приятные бонусы: полезный гайд для начинающего Python-разработчика и гайд о сленге в IT всем участникам интенсива!

Шпаргалка по Scapy с основными командами и примерами кода для работы с сетевыми пакетами.

### Установка Scapy

Если вы еще не установили Scapy, можете сделать это с помощью pip:

pip install scapy


### Импорт модуля

Перед началом работы с Scapy необходимо импортировать его:

from scapy.all import *


### Основные операции с Scapy

#### 1. Создание и отправка пакета

##### Пример: Отправка ICMP Echo Request (Ping)

# Создание ICMP пакета
packet = IP(dst="8.8.8.8")/ICMP()
# Отправка пакета и получение ответа
response = sr1(packet)
response.show() # Отображение ответа


#### 2. Сканиование портов

##### Пример: TCP SYN сканирование

# Сканирование портов на хосте
ans, unans = sr(IP(dst="192.168.1.1")/TCP(dport=[22, 80, 443], flags="S"), timeout=1)
ans.summary() # Отображение результатов


#### 3. Анализ трафика

##### Пример: Захват пакетов с использованием sniff()

# Функция для обработки пакетов
def packet_callback(packet):
print(packet.summary())

# Захват пакетов
sniff(prn=packet_callback, count=10) # Захват 10 пакетов


#### 4. Создание пользовательских пакетов

##### Пример: Создание и отправка UDP пакета

# Создание UDP пакета
udp_packet = IP(dst="192.168.1.1")/UDP(dport=12345)/Raw(load="Hello, World!")
# Отправка пакета
send(udp_packet)


#### 5. Сниффинг и фильтрация пакетов

##### Пример: Захват пакетов с фильтрацией по протоколу TCP

# Захват только TCP пакетов
sniff(filter="tcp", prn=lambda x: x.show(), count=10)


#### 6. Работа с ARP

##### Пример: ARP запрос для получения MAC-адреса

# Создание ARP запроса
arp_request = ARP(pdst="192.168.1.1")
# Создание Ethernet фрейма
broadcast = Ether(dst="ff:ff:ff:ff:ff:ff")
# Комбинирование
arp_request_broadcast = broadcast/arp_request
# Отправка запроса и получение ответа
answered_list = srp(arp_request_broadcast, timeout=1, verbose=False)[0]

for element in answered_list:
print(f"IP: {element[1].psrc}, MAC: {element[1].hwsrc}")


#### 7. Сохранение и загрузка пакетов из файла

##### Пример: Сохранение захваченных пакетов в файл

# Захват пакетов и сохранение в файл
packets = sniff(count=10)
wrpcap("captured_packets.pcap", packets)


##### Пример: Загрузка пакетов из файла

# Загрузка пакетов из файла
packets = rdpcap("captured_packets.pcap")
for packet in packets:
print(packet.summary())


#### 8. Отправка пакетов с пользовательскими данными

##### Пример: Отправка TCP пакета с данными

# Создание TCP пакета с пользовательскими данными
tcp_packet = IP(dst="192.168.1.1")/TCP(dport=80, flags="S")/Raw(load="GET / HTTP/1.1\r\nHost: example.com\r\n\r\n")
# Отправка пакета
send(tcp_packet)


### Полезные функции

- show(): Отображает содержимое пакета.
- summary(): Краткое описание пакета.
- hexdump(): Отображает пакет в шестнадцатеричном формате.

### Заключение

Scapy — мощный инструмент для работы с сетевыми пакетами, который позволяет выполнять множество операций, включая создание, отправку, анализ и захват пакетов. Используйте его ответственно и в рамках закона!

### Шпаргалка по pywinauto

pywinauto — это библиотека для автоматизации GUI приложений в Windows. Она позволяет автоматически управлять окнами приложений, нажимать кнопки, вводить текст, выбирать элементы и т.д.

#### Установка:
pip install pywinauto


## Основные компоненты:

- Application: Представляет собой приложение, с которым вы будете работать.
- WindowSpecification: Представляет окно или элемент управления.

## Подключение к приложению:

1. Запуск приложения через pywinauto:
 from pywinauto import Application

app = Application(backend="win32").start("notepad.exe")


2. Подключение к уже запущенному процессу:
 app = Application(backend="win32").connect(process=1234) # по PID
app = Application(backend="win32").connect(path="notepad.exe") # по имени исполняемого файла


Backend:
- "win32" — для большинства классических приложений Windows.
- "uia" — для приложений на основе UIAutomation (WPF, UWP и т.д.).

## Основные операции с окнами:

### Получение окна:

1. По заголовку окна:
 dlg = app.window(title="Untitled - Notepad")


2. По частичному совпадению заголовка:
 dlg = app.window(title_re=".*Notepad.*") # регулярное выражение


3. По классу окна:
 dlg = app.window(class_name="Notepad")


### Действия с окнами:

1. Ожидание открытия окна:
 dlg.wait("exists", timeout=10) # ждет 10 секунд, пока окно не появится


2. Активация окна:
 dlg.set_focus()


3. Минимизация, максимизация и закрытие:
 dlg.minimize()
dlg.maximize()
dlg.close()


4. Получение текста заголовка окна:
 title = dlg.window_text()


### Работа с элементами управления:

1. Нажатие кнопки:
 dlg.Button.click()
dlg.child_window(title="OK").click() # через child_window


2. Ввод текста в текстовое поле:
 dlg.Edit.type_keys("Hello, World!")


Примечание: Также можно использовать метод send_keys для более точных симуляций клавиатуры.

3. Выбор элемента в ComboBox:
 dlg.ComboBox.select("Item 1")


4. Установка флажка (CheckBox):
 dlg.CheckBox.check()
dlg.CheckBox.uncheck()


5. Получение текста из элемента:
 text = dlg.Static.texts()


### Действия с меню:

1. Доступ к меню:
 dlg.menu_select("Файл->Сохранить как")


2. Переход к пунктам меню по индексу:
 dlg.menu_select("Файл[0]->Выход[5]") # через индексы


### Работа с диалоговыми окнами:

1. Открытие диалогового окна (например, "Открыть файл"):
 dlg.menu_select("Файл->Открыть...")


2. Взаимодействие с диалогом открытия файла:
 open_dlg = app.window(title_re=".*Открыть.*")
open_dlg.Edit.type_keys("C:\\path_to_file.txt")
open_dlg.Open.click()


### Получение информации об элементах:

1. Получение списка всех элементов:
 dlg.print_control_identifiers()


2. Поиск элемента по контролу:
 btn = dlg.child_window(auto_id="12345")
btn.click()

Шпаргалка по библиотеке imaplib в Python, которая включает основные операции с IMAP-сервером, такие как подключение, аутентификация, чтение и отправка писем, а также пример кода для каждой операции.

### Установка
Для работы с imaplib не требуется дополнительная установка, так как это стандартная библиотека Python. Однако, для работы с электронной почтой может понадобиться модуль email для обработки содержимого писем.

### Основные операции с imaplib

#### 1. Подключение к IMAP-серверу

import imaplib

# Укажите адрес вашего IMAP-сервера и порт
IMAP_SERVER = 'imap.example.com'
EMAIL_ACCOUNT = '[email protected]'
PASSWORD = 'your_password'

# Создаем объект IMAP
mail = imaplib.IMAP4_SSL(IMAP_SERVER)

# Вход в учетную запись
mail.login(EMAIL_ACCOUNT, PASSWORD)


#### 2. Получение списка папок

# Получаем список папок (почтовых ящиков)
status, folders = mail.list()
print(folders)


#### 3. Выбор папки (например, "INBOX")

# Выбор папки "INBOX"
mail.select('INBOX')


#### 4. Поиск писем

# Поиск писем по заданному критерию (например, все непрочитанные)
status, messages = mail.search(None, 'UNSEEN')

# messages - это строка с номерами писем, разделенными пробелом
email_ids = messages[0].split()
print(email_ids) # Список ID непрочитанных писем


#### 5. Чтение письма

# Чтение первого непрочитанного письма
if email_ids:
latest_email_id = email_ids[0] # ID первого непрочитанного письма
status, msg_data = mail.fetch(latest_email_id, '(RFC822)') # Получаем полное сообщение
raw_email = msg_data[0][1] # raw_email - это сырое содержимое письма
print(raw_email.decode('utf-8')) # Декодируем и выводим содержимое


#### 6. Удаление письма

# Удаление письма
if email_ids:
mail.store(latest_email_id, '+FLAGS', '\\Deleted') # Помечаем письмо как удаленное
mail.expunge() # Удаляем помеченные письма


#### 7. Выход и закрытие соединения

# Выход из учетной записи и закрытие соединения
mail.logout()


### Полный пример

Вот полный пример, который объединяет все вышеперечисленные операции:

import imaplib
import email
from email.header import decode_header

# Настройки
IMAP_SERVER = 'imap.example.com'
EMAIL_ACCOUNT = '[email protected]'
PASSWORD = 'your_password'

# Подключаемся к IMAP-серверу
mail = imaplib.IMAP4_SSL(IMAP_SERVER)
mail.login(EMAIL_ACCOUNT, PASSWORD)

# Выбираем папку "INBOX"
mail.select('INBOX')

# Поиск непрочитанных писем
status, messages = mail.search(None, 'UNSEEN')
email_ids = messages[0].split()

# Чтение и вывод непрочитанных писем
for email_id in email_ids:
status, msg_data = mail.fetch(email_id, '(RFC822)')
raw_email = msg_data[0][1]

# Парсим письмо
msg = email.message_from_bytes(raw_email)
subject, encoding = decode_header(msg['Subject'])[0]

if isinstance(subject, bytes):
subject = subject.decode(encoding if encoding else 'utf-8')

print(f'Subject: {subject}')

# Удаляем письмо
mail.store(email_id, '+FLAGS', '\\Deleted')

# Удаляем помеченные письма
mail.expunge()

# Выход из учетной записи
mail.logout()


### Полезные советы

- Аутентификация: Если у вас включена двухфакторная аутентификация (2FA), вам может понадобиться создать специальный пароль приложения для доступа к вашей учетной записи.
- Расшифровка заголовков: Заголовки писем могут быть закодированы, поэтому используйте decode_header для правильного извлечения.
- Проверка статуса: Всегда проверяйте статус операции, чтобы убедиться, что она выполнена успешно

Шпаргалка по использованию модуля `configparser` в Python. Этот модуль позволяет читать и записывать конфигурационные файлы в формате INI.

---

## Шпаргалка по configparser

### Установка

configparser является встроенным модулем в Python (начиная с версии 3.0), поэтому установка не требуется. Просто импортируйте его в вашем коде.

import configparser


### Основные операции

#### 1. Создание и запись конфигурационного файла

import configparser

# Создание объекта ConfigParser
config = configparser.ConfigParser()

# Добавление секции и параметров
config['DEFAULT'] = {
'Server': 'smtp.example.com',
'Port': '587'
}

config['USER'] = {
'Username': '[email protected]',
'Password': 'secret'
}

# Запись конфигурации в файл
with open('config.ini', 'w') as configfile:
config.write(configfile)


#### 2. Чтение конфигурационного файла

import configparser

# Создание объекта ConfigParser
config = configparser.ConfigParser()

# Чтение конфигурационного файла
config.read('config.ini')

# Получение значений
server = config['DEFAULT']['Server']
port = config.getint('DEFAULT', 'Port') # Получение значения как int
username = config['USER']['Username']
password = config['USER'].get('Password') # Получение значения, если параметр может отсутствовать

print(server, port, username, password)


### Основные методы

- `ConfigParser()`: Создает новый объект ConfigParser.

- `read(filenames)`: Читает конфигурационные файлы. Можно передать список файлов.

- `write(file)`: Записывает текущую конфигурацию в указанный файл.

- `sections()`: Возвращает список секций в конфигурационном файле.

- `options(section)`: Возвращает список параметров в указанной секции.

- `get(section, option)`: Получает значение параметра как строку.

- `getint(section, option)`: Получает значение параметра как целое число.

- `getfloat(section, option)`: Получает значение параметра как число с плавающей точкой.

- `getboolean(section, option)`: Получает значение параметра как логическое значение.

- `set(section, option, value)`: Устанавливает значение параметра.

- `remove_option(section, option)`: Удаляет параметр из секции.

- `add_section(section)`: Добавляет новую секцию.

- `remove_section(section)`: Удаляет указанную секцию.

### Пример конфигурационного файла (config.ini)

[DEFAULT]
Server = smtp.example.com
Port = 587

[USER]
Username = [email protected]
Password = secret

[SETTINGS]
EnableFeatureX = True


### Обработка ошибок

- Проверка существования секции или параметра:
 if config.has_section('USER'):
print('Секция USER существует')

if config.has_option('USER', 'Username'):
print('Параметр Username существует')


- Обработка исключений:
 try:
value = config['USER']['NonExistentOption']
except KeyError:
print('Параметр не найден')


### Примечания

- По умолчанию секции и параметры регистронезависимы.
- Для изменения поведения (например, работа с регистром) можно использовать методы optionxform или переопределить их.
- В configparser можно использовать комментарии, начиная строку с # или ;.

Шпаргалка по `virtualenv` — инструменту для создания изолированных виртуальных окружений в Python. Это позволяет управлять зависимостями для различных проектов, избегая конфликтов между библиотеками.

---

## Шпаргалка по virtualenv

### Установка virtualenv

1. Установка через pip:
 pip install virtualenv


2. Проверка установки:
 virtualenv --version


### Создание виртуального окружения

1. Создание нового виртуального окружения:
 virtualenv <имя_окружения>

Пример:
 virtualenv myenv


2. Создание окружения с определённой версией Python:
 virtualenv -p /usr/bin/python3.8 <имя_окружения>

Пример:
 virtualenv -p python3.8 myenv


### Активация виртуального окружения

- Windows:
 .\myenv\Scripts\activate


- Linux/Mac:
 source myenv/bin/activate


### Деактивация виртуального окружения

deactivate


### Установка пакетов в виртуальном окружении

1. После активации окружения:
 pip install <имя_пакета>

Пример:
 pip install requests


2. Проверка установленных пакетов:
 pip list


3. Сохранение зависимостей в файл:
 pip freeze > requirements.txt


4. Установка зависимостей из файла:
 pip install -r requirements.txt


### Удаление виртуального окружения

Просто удалите папку окружения:
rm -rf myenv # Linux/Mac
rmdir /S /Q myenv # Windows


### Дополнительные команды

- Создание окружения с использованием `--no-site-packages` (по умолчанию уже изолировано):
 virtualenv --no-site-packages <имя_окружения>


- Список доступных опций:
 virtualenv --help


### Примечания

- После активации виртуального окружения, все команды pip и python будут относиться к этому окружению, пока оно активно.
- Для удобства можно добавить активацию окружения в requirements.txt или использовать Pipenv или Poetry для управления зависимостями и окружениями.

https://habr.com/ru/articles/837936/

😶Новейшая версия ChatGPT O1 значительно превосходит предыдущие поколения по точности и производительности. По данным последних тестов:

- В соревнованиях по программированию (Codeforces) O1 достиг ошеломляющего результата — 89% по точности, что почти в 8 раз больше, чем у gpt4.0.

Купить общий аккаунт с Chat GPT Plus за 249₽ с гарантией, вместо 2499₽ можно у @remeje
❗️1 Человеку за отзыв

### Шпаргалка по модулю cryptography в Python

Модуль cryptography предоставляет инструменты для работы с различными криптографическими задачами, такими как шифрование, дешифрование, создание цифровых подписей и управление ключами. Ниже приведены основные функции и примеры их использования.

#### Установка модуля
pip install cryptography


### Основные компоненты модуля cryptography

1. Фернэт (Fernet)
2. Ассиметричное шифрование
3. Хэширование

### 1. Фернэт (Fernet)

Fernet - это симметричный алгоритм шифрования, который обеспечивает конфиденциальность и целостность данных.

#### Генерация ключа
from cryptography.fernet import Fernet

key = Fernet.generate_key()
print(key)


#### Шифрование данных
from cryptography.fernet import Fernet

key = Fernet.generate_key()
cipher_suite = Fernet(key)

# Шифрование
text = b"Hello, World!"
cipher_text = cipher_suite.encrypt(text)
print(cipher_text)


#### Дешифрование данных
# Дешифрование
plain_text = cipher_suite.decrypt(cipher_text)
print(plain_text)


### 2. Ассиметричное шифрование

Ассиметричное шифрование использует пару ключей: публичный и приватный. Пример использования RSA.

#### Генерация ключей RSA
from cryptography.hazmat.primitives.asymmetric import rsa
from cryptography.hazmat.primitives import serialization

private_key = rsa.generate_private_key(
public_exponent=65537,
key_size=2048
)

public_key = private_key.public_key()

# Сохранение приватного ключа
private_pem = private_key.private_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PrivateFormat.PKCS8,
encryption_algorithm=serialization.NoEncryption()
)

# Сохранение публичного ключа
public_pem = public_key.public_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PublicFormat.SubjectPublicKeyInfo
)

print(private_pem)
print(public_pem)


#### Шифрование данных с использованием публичного ключа
from cryptography.hazmat.primitives.asymmetric import padding
from cryptography.hazmat.primitives import hashes

message = b"Secret message"
cipher_text = public_key.encrypt(
message,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
print(cipher_text)


#### Дешифрование данных с использованием приватного ключа
plain_text = private_key.decrypt(
cipher_text,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
print(plain_text)


### 3. Хэширование

Хэширование используется для создания уникального идентификатора данных.

#### Создание хэша
from cryptography.hazmat.primitives import hashes

digest = hashes.Hash(hashes.SHA256())
digest.update(b"Hello, World!")
hash_value = digest.finalize()
print(hash_value)


### Примеры использования

#### Генерация и проверка цифровой подписи
from cryptography.hazmat.primitives.asymmetric import padding
from cryptography.hazmat.primitives import hashes

# Подпись данных
signature = private_key.sign(
b"Sign this message",
padding.PSS(
mgf=padding.MGF1(hashes.SHA256()),
salt_length=padding.PSS.MAX_LENGTH
),
hashes.SHA256()
)

# Проверка подписи
try:
public_key.verify(
signature,
b"Sign this message",
padding.PSS(
mgf=padding.MGF1(hashes.SHA256()),
salt_length=padding.PSS.MAX_LENGTH
),
hashes.SHA256()
)
print("Signature is valid.")
except:
print("Signature is invalid.")


Эта шпаргалка предоставляет основные примеры использования модуля cryptography. Вы можете адаптировать и расширять эти примеры в зависимости от ваших конкретных требований.

Краткое руководство по Flask — микрофреймворку на Python для создания веб-приложений.

### Установка Flask
Установите Flask через pip:
pip install flask


### Создание Простого Приложения
Создайте файл app.py:
from flask import Flask

app = Flask(__name__)

@app.route('/')
def home():
return 'Hello, Flask!'

if __name__ == '__main__':
app.run(debug=True)


Запустите приложение:
python app.py


### Основные Компоненты
1. Маршруты (Routes)
 @app.route('/about')
def about():
return 'About Page'


2. Переменные в URL
 @app.route('/user/<username>')
def show_user_profile(username):
return f'User {username}'


3. Методы HTTP-запросов
 @app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
return 'Do the login'
else:
return 'Show the login form'


### Работа с Формами и Запросами
1. Получение данных из формы
 from flask import request

@app.route('/login', methods=['POST'])
def login():
username = request.form['username']
password = request.form['password']
return f'Username: {username}, Password: {password}'


2. Перенаправления и URL для именованных маршрутов
 from flask import redirect, url_for

@app.route('/admin')
def admin():
return redirect(url_for('home'))


### Шаблоны
1. Использование Jinja2 шаблонов
Создайте папку templates и добавьте файл index.html:
 <!doctype html>
<html>
<head><title>Hello</title></head>
<body>
<h1>Hello, {{ name }}!</h1>
</body>
</html>


В app.py:
 from flask import render_template

@app.route('/hello/<name>')
def hello(name):
return render_template('index.html', name=name)


### Статические Файлы
Создайте папку static и добавьте CSS или JavaScript файлы. Например, style.css:
body {
background-color: #f0f0f0;
}


В шаблоне (например, index.html):
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='style.css') }}">


### Работа с Базой Данных
1. Подключение SQLite через SQLAlchemy
 pip install flask_sqlalchemy


В app.py:
 from flask_sqlalchemy import SQLAlchemy

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db'
db = SQLAlchemy(app)

class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(150), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)

if __name__ == '__main__':
app.run(debug=True)


### Расширения Flask
1. Flask-WTF для форм:
 pip install flask-wtf


Пример использования:
 from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField
from wtforms.validators import DataRequired

class LoginForm(FlaskForm):
username = StringField('Username', validators=[DataRequired()])
password = PasswordField('Password', validators=[DataRequired()])
submit = SubmitField('Login')


Flask — мощный и гибкий микрофреймворк, который легко расширять и настраивать под конкретные нужды. Основываясь на этом кратком руководстве, вы можете создать простое веб-приложение, а затем углубиться в документацию для более сложных задач и возможностей.