Уведомления

Группа в Telegram: присоединиться

Уведомления

  • Found 3078 posts.

Python для новичков » Как проверить наличие кнопки Найти на веб-странице с помощью Selenium » вчера 21:23:55

Как проверить наличие кнопки Найти на веб-странице с помощью Selenium. Я начал вот так, но на этом застопорился. Тут же прикладываю скрин dev tools с элементами

from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException

driver = webdriver.Firefox(executable_path=r“Cdriver/geckodriver.exe”)
driver.get("https/www.“)
def check_exists ():
try: python_button = driver.find_element_by_class_name(”search_container")
except NoSuchElementException:
return False
return True

Центр помощи » Не понимаю в чем ошибка, делал бота для дискорда, начал создавать embed и все пошло на перекосяк » вчера 13:49:12

вот код: import discord
from discord.ext import commands
from config import settings

bot = commands.Bot(command_prefix = settings) # Так как мы указали префикс в settings, обращаемся к словарю с ключом prefix.


@bot.event
async def on_ready():
activity = discord.Game(name=“!help”, type=3)
await bot.change_presence(status=discord.Status.idle, activity=activity)
print(“Bot is ready!”)

@bot.command() # Не передаём аргумент pass_context, так как он был нужен в старых версиях.
async def author(ctx): # Создаём функцию и передаём аргумент ctx.
author = ctx.message.author # Объявляем переменную author и записываем туда информацию об авторе.
await ctx.send(f'Автор бота = Kizz') # Выводим сообщение с упоминанием автора, обращаясь к переменной author.


@bot.command() # Не передаём аргумент pass_context, так как он был нужен в старых версиях.
async def rules(ctx): # Создаём функцию и передаём аргумент ctx.
em = discord.Embed(title='My Embed Title', description='My Embed Content.',colour=0xDEADBF)
em.set_author(name='Kizz', icon_url=client.user.default_avatar_url)
await client.send_message(message.channel, embed=em)


bot.run(settings) # Обращаемся к словарю settings с ключом token, для получения токена

код config.py : settings = {
‘token’: ‘token’,
‘bot’: ‘bot name’,
‘id’: id,
‘prefix’: “!”
}

Python для новичков » Изменение области печати Excel через Python  » Март 4, 2021 21:22:35

Доброго времени суток!

Перешел на редактирование Excel файлов, но есть одна проблема, область печати документа при редактировании таким образом сбивается. Если нет возможности “Содрать” данные настроек печати со старого файла. Можно реализовать это вручную, количество строк и колон фиксированное.

Использую модули xlrd, xlwt и xlutils - так как они поддерживают xls (НЕ xlsx)

Единственное упоминание об этой проблеме, что я нашел в интернете:
Вы читаете в файле с помощью xlrd, а затем копируете его в рабочую книгу xlwt с помощью xlutils.copy.copy().

Обратите внимание, что вам нужно будет установить библиотеки xlrd и xlutils.

Отметим также, что не все копируется. Например, изображения и настройки печати не копируются, и их необходимо сбросить.

мой код:
 from xlrd import open_workbook
from xlutils.copy import copy
import os
# Эти две функции просто устанавливают предыдущий стиль ячейки, скоммуниздил их где-то в интернете
def setOutCell(outSheet, col, row, value):
    previousCell = _getOutCell(outSheet, col, row)
    outSheet.write(row, col, value)
    if previousCell:
        newCell = _getOutCell(outSheet, col, row)
        if newCell:
            newCell.xf_idx = previousCell.xf_idx
def _getOutCell(outSheet, colIndex, rowIndex):
    row = outSheet._Worksheet__rows.get(rowIndex)
    if not row: return None
    cell = row._Row__cells.get(colIndex)
    return cell
book = open_workbook("Мой загружаемый файл.xls", formatting_info=True)
sheet = book.sheet_by_index(0)
items = sheet.nrows - 37
wb = copy(book) #тут 'перехожу в режим' редактирования, оно и не копирует область печати
s = wb.get_sheet(0)
setOutCell(s, 17, 26 + items, 'Тут что-то меняю')
setOutCell(s, 17, 30 + items, 'И тут')
setOutCell(s, 11, 34 + items, 'И тут')
setOutCell(s, 31, 26 + items, 'И тут тоже')
setOutCell(s, 29, 28 + items, 'Само собой тут тоже')
wb.save("Test.xls") #Создание и сохранение нового файла
os.startfile("Test.xls", "print") # Вывод печати на принтер
Надеюсь, тут найдется человек, страдавший подобной хе*нёй что и я.
Буду очень признателен.

Python для новичков » Проекция ламберта » Фев. 28, 2021 01:53:00

Доброго времени суток!
Нужно нарисовать точки на проекции ламберта.
Немного подсмотрев, удалось это сделать. Но хотелось бы изменить рисунок, а именно установить лимит по градусам до +90/-90 и нарисовать а95 для точек. Подскажите, пожалуйста!

import matplotlib.pyplot as plt
import numpy as np

x = np.array() #
y = np.array() #

fig = plt.figure(figsize10,10)) # задаем размер рисунка

ax = fig.add_subplot(111, projection='lambert')
ax.scatter(x, y, marker = ‘o’,color = ‘green’, s = 50)# s - размер маркера
ax.set_title('Lambert', color='blue')
ax.grid(True)

fig.savefig('mpl_temp.png') # сохраняем

plt.show()

Web » eel обработка событий » Фев. 27, 2021 21:53:48

кавыряю библиотеку eel

нарисовал формачку. а как теперь обрабатывать клик по кнопке(отправить данные)?

Python проекты » Примеры json api сервисов на aiohttp (middlewares, оболочки запросов/ответов, валидация данных) » Фев. 26, 2021 11:18:28

Cделал мидлевары для json api сервиса на aiohttp.

1. Простая мидлевара, сигнатура обработчика должна быть такой:
 async def some_handler(request: web.Request, data: Any) -> Any:
(вместо Any у data надо, конечно, ставить нужную аннотацию,.. аргументы обработчика - позиционные)

2. Мидлевара для произвольных аргументов у обработчиков, примеры объявлений обработчиков:
 async def some_handler_1(data: dict) -> int:
    # ...
    return some_data
async def some_handler_2(storage: StorageClass, data: List[int]) -> dict:
    # ...
    return some_data
async def some_handler_3(
    data: Union[dict, List[str]], logger: LoggerClass, request: web.Request
) -> str:
    # ...
    return some_data
(аргументы должны иметь аннотации)

3. Мидлевара с оболочками для запросов и ответов, и валидацией данных (может наследоваться и от 1-й и от 2-й)

Ссылка:
https://github.com/EvgeniyBurdin/api_service/tree/main

Есть докер - можно быстро запустить и посмотреть в работе.

Web » Ребят помогите с библиотекой aiogram |ниже указан вопрос| » Фев. 26, 2021 11:14:39

Ребят , как сделать вот такую функцию на aiogram:
При нажатии на кнопку ‘Активировать подписку’ выдается текст:' Bla-bla-bla(7)”, появляются кнопки: ‘’ Вернуться назад’(возвращает на шаг назад)

a. Это форма. Здесь юзер должен ввести уникальный 12-значный код (12 цифр), который он приобрел на моей сайте (ссылка в кнопках ‘оплатить подписку 30.60.90 дней).

i. Введенный текст проверяется на то что это только цифры (если не цифры, то пишем ошибку – допустимы только цифры), проверяется на 12 символов (цифр), (если не 12 цифр, то пишем ошибку – требуется 12 цифр, проверьте и вставьте код доступа заново).

ii. Если код верный (есть в списке общих кодов), то добавляем пользователя в список рассылки. (30,60, 90 дней)

b. При ошибке ввода – повторно запрашивать код.

Python для новичков » Создание теста с сохранением вопроса и ответа в БД » Фев. 25, 2021 02:05:14

День добрый, создаю форму тестирования примитивную, не могу понять, как отправить данные в базу на со списком ответов текущего пользователя. Для этого необходимо создать дополнительную таблицу с полями id_users, id_test, ( id_вопрос | id_ответ; ).Но что то я встал в ступор как создать модель и отправить данные теста со списком вопросов и ответов в БД.
urls
 from django.urls import path
from . import views
from django.conf.urls import url
urlpatterns = [
    path( '', views.TestingView.as_view(), name='test'),
    #path( '<int:pk>', views.TestingDetailView.as_view(), name='test-detail'),
    url(r'^(?P<pk>\d+)$', views.TestingDetailView.as_view(), name='test-detail'),
    url(r'^answer/(?P<pk>\d+)$', views.TestingDetailView.as_view(), name='answer'),

models
 rom django.db import models
# Create your models here.
class Testing(models.Model):
    test_name = models.CharField('Название теста', max_length=254)
    def __str__(self):
        return self.test_name
    class Meta:
        verbose_name = "Тест"
        verbose_name_plural = "Тесты"
class Questions(models.Model):
    question = models.CharField('Вопрос', max_length=254)
    id_testing = models.ForeignKey(Testing, on_delete=models.CASCADE, verbose_name='Тест', blank=True, null=True,
                                   related_name='quest_testing' )
    def __str__(self):
        return self.question
    class Meta:
        verbose_name = "Вопрос"
        verbose_name_plural = "Вопросы"
class Answer(models.Model):
    text_questions = models.TextField('Текст ответа')
    id_questions = models.ForeignKey(Questions, on_delete=models.CASCADE, verbose_name='Вопрос', blank=True, null=True,
                                   related_name='answer_quest')
    correct_answer = models.BooleanField(default=False)
    def __str__(self):
        return self.text_questions
    class Meta:
        verbose_name = "Ответ"
        verbose_name_plural = "Ответы"

views
 from django.template.context_processors import csrf
from django.shortcuts import render, redirect
# Create your views here.
# получение данных из бд
from django.views import generic
from django.views.generic.base import View
from django.views.generic import DetailView
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from .models import Testing, Questions, Answer
#Список тестов
class TestingView(View):
    def get(self, request):
        test = Testing.objects.all()
        return render(request, "testing/index.html", {"tests": test})
#Вопросы и ответы    
class TestingDetailView(DetailView, View):
    model = Testing
    template_name = 'testing/detail_view.html'
    context_object_name = 'testing'

  <h2>{{ testing.test_name }}</h2>
    {% for answer in testing.quest_testing.all %}<br><br>
        <b>{{ answer.question }}</b> / {{ answer.id }} <br>
        {% for answers in answer.answer_quest.all %}
              <form method="POST">
              {% csrf_token %}
                    <input type="radio"
                            id="id_{{ answers.id }}"
                            type="radio"
                            value="{{ answers.correct_answer }}"
                            name="radio_{{ answer.id }}" />
            {{  answers.text_questions }} <b>({{ answers.correct_answer }} / {{ answers.id }})</b><br>
        {% endfor %}
{% endfor %}
              <br><br><button type="submit" class="btn badge-primary"> Ответить </button>
                </form>
{% endblock %}


Центр помощи » Футболки » Фев. 24, 2021 11:46:51

Ограничение по времени на тест 1 секунда
Ограничение по памяти на тест 256 мегабайт
Ввод: стандартный ввод
Вывод: стандартный вывод

Тима любит футболки. В городе есть очень крутой магазин футболок, который продает футболки n цветов пронумерованных от 1 до n, включительно. В течении k дней магазин проводит масштабную акцию, где они будут продавать футболки некоторых цветов за полцены. Магазин опубликовал у себя на сайте таблицу a, где ai,j обозначает действует ли акция в i-й день на футболку цвета j (1 если действует, иначе 0). У Тимы есть порядок предпочтений цветов p, который является перестановкой чисел от 1 до n. Любимый цвет Тимы это цвет p1, второй самый любимый это цвет p2 и т.д. Каждый день в течении k дней он будет приходить в магазин, и среди тех цветов на которые действует акция в тот день, он купит одну футболку с наиболее любимым цветом. Формально, в i-й день он выберет самый минимальный j, что ai,pj=1 и купит одну футболку с цветом pj. Если в тот день нет ни одного цвета, на который действует акция, то он ничего не покупает. Тима хранит p в тайне. Какое максимальное количество различных цветов может оказаться среди футболок, которое он купил за k дней?

Входные данные
В первой строке задано два целых числа n и k (1≤n≤105, 1≤k≤14). В следующих n строках записано по k символов — элементы a. Каждый символ является либо «0», либо «1».

Выходные данные
Выведите одно целое число — максимальное количество различных цветов, которое может оказаться среди футболок.

Система оценки
Данная задача содержит 6 подзадач, в которых выполняются следующие ограничения:

Тесты из условия.
1)n, k≤2.
2)n, k≤8.
3)n, k≤14.
4)n≤10000, k≤14.
Примеры:
Input
4 3
111
110
001
110
Output
2
Input
3 3
000
000
000
Output
0

Python для новичков » Настройка openpyxl » Фев. 20, 2021 15:13:30

Всем доброго дня! Помогите пожалуйста блондинке, далекой от программирования, настроить бот…
Скопировала в библиотеку openpyxl, но при запуске IDLE выдает ошибку:
ImportError: cannot import name ‘Workbook’ from ‘openpyxl’ (unknown location)

Django » Django ORM действие над строкой таблицы » Фев. 19, 2021 12:48:50

Добрый день, уважаемые специалисты Django!
Прошу помощи в таком вопросе:
Есть код:
def get_readonly_fields(self, request, obj=None):

all_fields = list(self.get_fields(request, obj))
user_blocked_fields = all_fields[:]
iskom = 'Самовывоз'
naxodim = Articles.objects.filter(delivery_type__title__icontains=iskom)

if request.user.has_perm('excels.can_edit_manager_group'):
user_blocked_fields = [f for f in user_blocked_fields if f not in self.manager_group_fields]

if request.user.has_perm('excels.can_edit_upakovka_group'):
user_blocked_fields = [f for f in user_blocked_fields if f not in self.upakovka_group_fields]

if request.user.has_perm('excels.can_edit_transport_group'):
user_blocked_fields = [f for f in user_blocked_fields if f not in self.transport_group_fields]

# if request.user.has_perm('excels.can_edit_manager_group') and naxodim:
# user_blocked_fields = [f for f in user_blocked_fields if f not in self.manager_and_transport_group_fields]
#
# if request.user.has_perm('excels.can_edit_transport_group') and naxodim:
# user_blocked_fields = [f for f in user_blocked_fields if f not in self.transport_minus_all_group_fields]

return user_blocked_fields

Получается, что у меня происходит смена разрешений на редактирование полей в зависимости от прав пользователей.
далее я хочу сделать разрешение не на всю таблицу, а только на ОДНУ СТРОКУ таблицы.
То есть, когда заходишь в одну запись в таблице и выставляешь там в FK слово “Самовывоз”, потом записываешь и тогда происходит смена одних полей по readonlu_fields на другие.
Это у меня по фильтру происходит, но на всю таблицу (class), а мне нужно ТОЛЬКО НА ОДНУ СТРОКУ ГДЕ У МЕНЯ ЕСТЬ УКАЗАННОЕ СЛОВО “САМОВЫВОЗ” В ОДНОМ ИЗ ПОЛЕЙ.!
Как мне это сделать?
Спасибо всем кто откликнется!

GUI » Реализация шахмат » Фев. 14, 2021 19:09:27

Посоветуйте На чем реализовывать подобное?

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

что лучше пользовать? pygame? или что? Интересует именно графика и её механика. Логика ироде есть.

События » Прими участие в PyCon Weekend 19-20 марта в Роза Хутор » Фев. 9, 2021 15:35:08

19-20 марта в Роза Хутор состоится конференция по питону. PyCon Weekend - это спин-офф большого Пайкона. Приглашаем к участию!

На высоте 1170 м над уровнем моря мы обсудим тренды развития python и инструментальные кейсы.

О своем желании выступить уже сказали:
- Григорий Петров, Evrone: “Почему python медленный?”
- Алексей Буров, Positive Technologies: “Как без боли использовать Git Precommit Hook”
- Павел Дружинин, @Mail.ru Group: “Из веб-девелопмента к “железу”: автоматизируем на Python выдачу оборудования при помощи вендинговых аппаратов в компании с 7000+ сотрудников”
- Артем Селезнев, Сбербанк: “Как заставить вашу рекомендательную систему узнать пользователя лучше”
- Максим Акинин: “Опыт интеграции микросервисов на Rust в pipeline микросервисов, написанных на Python”
- Никита Дмитриев, Яндекс: “Новинки в CatBoost”
- Денис Горшков, КЭШОФФ: “MicroPython в системах умного дома”

Подать заявку на выступление можно на сайте https://pycon-weekend.ru/cfp до 16 февраля.

Узнать подробнее о мероприятии https://pycon-weekend.ru/

Купить билет https://it-people.ru/pycon_weekend_ticket #платно

Организатор https://www.it-people.ru/

Python для новичков » Столкнулся с проблемой с openpyel - при создании данных на втором листе, они также замещают данные на первом » Фев. 6, 2021 20:17:13

Столкнулся с проблемой с openpyel - при создании данных на втором листе, они также замещают данные на первом. Создал файл Excel wb_new, в нем на лист ns импортировал данные из Word. В коде ниже создаю второй лист в этой книге ns_new, куда переношу данные с первого листа, заполняя пустые ячейки таблицы.
Второй лист формируется нормально, но проблема в том, что при этом первый лист становится точно таким же, как и второй, хотя я в него никакие изменения не вношу. Помогите, пожалуйста, разобраться.
 def edit_xlsx():
    global ns, wb_new, document
    wb_new.save("word-to-excel_temp.xlsx")
    max_row = 0
    wb_new.create_sheet(index=2,title="FullFill Sheet")
    ns_new = wb_new['FullFill Sheet']
    wb_new.save('word-to-excel.xlsx')
    column_max = ns.max_column
    row_max = ns.max_row
    for i in range(1, column_max+1, 1):
        for n in range(1, row_max +1, 1):
            new_row = max_row + n
            d = ns.cell(row=n, column=i)
            g = ns.cell(row=n + 1, column=i)
            if d.value != None:
                if g.value == None and n <= row_max and i <= column_max:
                       g.value = d.value
            new_d = ns_new.cell(row=new_row, column=i)
            new_d.value = d.value
            wb_new.save('word-to-excel.xlsx')

Python для новичков » Проблема с googletraslate » Фев. 5, 2021 13:29:20

Всем привет!
Есть вот такой скрипт.

 import re
import googletrans
from googletrans import Translator
translator = Translator()
eng_file=open("file.txt", "r")
line_en=eng_file.readline()
while line_en:
 line_en=re.sub(r'<[^<]+>', "",line_en)
 result = translator.translate(line_en.strip(),src='en',dest='ru')
 print(result.text)
 line_en=eng_file.readline()
eng.file.close()

Он достаёт текст из тегов и пытается перевести его через гугл.
Проблема в том, что он сработал один раз, показав вывод на Русском и перестал переводить….
То есть при выполнения скрипта на выводе я получаю исходный текст на английском.

Думал, что может ограничения гугла какое, но при выполнении скрипта на другом компе с другим IP результат тот же.

Образец содержимого файла file.txt

   <string name="login_OK">Login successful!</string>
<string name="login_wrong_pin">Wrong PIN!</string>
<string name="login_already_logged">Already logged in on: </string>
<string name="login_code_error">Server error!</string>
<string name="login_licence">Licence problem!</string>
<string name="logout_Selected">Logout selected</string>
<string name="logout_All">Logout all</string>
<string name="submit_all">Submit for all</string>

Python для новичков » Нужна помощь по torchtext » Фев. 3, 2021 19:46:43

Использую модуль torchtext для классификации текстов.
Классификация с помощью pytorch моделей
Не получается разобраться с механизмом векторизации текста.
В общем, если использовать sclearn для получения векторов, то все идет нормально. Скармливаем трейн и тест модели получаем нормальный скор
Хотел применить вместо sklearn torchtext , но почему то чепуха. Подозреваю, я неправильно использую словарь слов. Валидация показывает аккураси 90, а тест 1
Вот код для создания трейна и валид датасетов и итератора

 TEXT = torchtext.data.Field(sequential=True, tokenize=lambda x: x.split(' '), pad_token='<pad>', unk_token='<unk>')
LABEL = torchtext.data.LabelField(sequential=False, unk_token=None, is_target=True)
datafields = [('text', TEXT), ('label', LABEL)]
data = read_data(train, datafields, label_column='category_id')
valid, trainn = data.split([0.1, 0.9])
TEXT.build_vocab(trainn, max_size=50000)
LABEL.build_vocab(trainn)
model = CBoWTextClassifier2(TEXT, LABEL, emb_dim=128) 
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
model.to(device)
train_iterator = torchtext.data.BucketIterator(
        trainn,
        device=device,
        batch_size=256,
        sort_key=lambda x: len(x.text),
        shuffle = True,
        repeat=False,
        train=True)
    
valid_iterator = torchtext.data.Iterator(
        valid,
        device=device,
        batch_size=256,
        repeat=False,
        train=False,
        sort=False)

Вот код теста:
 datafields = [('text', TEXT)]
data = read_data(test, datafields)
test_iterator = torchtext.data.Iterator(
    data,
#     device='cpu',
    batch_size=1,
    repeat=False,
    train=False,
    sort=False)

Остальное стандартно. Модель обычная эмбеддинг и лиейные слои

Django » Проблемы с django 1.6 в ubuntu 20.10 » Фев. 2, 2021 22:21:50

Проблемы с django 1.6 в ubuntu 20.10.

Посоветуйте метод развертывания версии django 1.6 на ubuntu 20.10.

По умолчанию устанавливается python 3 а вот нужен python 2.

Инструментальные средства разработки » Бинды Wing » Фев. 1, 2021 18:53:24

Здравия, установил Wing, и оказалось, что у него запуск кода в Shell на комбинацию ctrl+alt+v, так вот, можно ли поменять её например на f5? в настройках ничего не нашёл.

Python для новичков » телеграммбот Отправка сообщений в определенное время и в определенный день » Янв. 26, 2021 19:02:31

Не понимаю как сделать отправку, были попытки, но у меня чтото не сходится
Вот часть кода:
@bot.message_handler(content_types
def send_text(message):
#Понедельник -1
def week_mondey_morning():
bot.send_message(message.chat.id, ‘Сегодня будут следующие пары:’)
bot.send_message(message.chat.id, monday)
def week_mondey_evening():
bot.send_message(message.chat.id, ‘Завтра следующие пары:’)
bot.send_message(message.chat.id, tuesday)

def day_week():
day_week = datetime.datetime.now().weekday()
def week_number():
week_number = 1
while week_number == 1:
schedule.every().day.at('00:00').do(day_week)
if day_week == 0:
schedule.every().day.at('6:00').do(week_mondey_morning)
schedule.every().day.at('20:00').do(week_mondey_evening)

schedule.run_pending()
time.sleep(1)

Python для новичков » Установка django-cms.org с выбранным языком.  » Янв. 19, 2021 12:57:57

При установке djangocms на руссифицированую Windows, djangocms автоматически устанавливается на русском языке. Как сделать чтобы при установке можно было выбрать зарание нужный язык?

После установке конечно можно поменять язык в файле setting.py, но пока не могу понять как поменять адрессную строку. К примеру: поменял язык на английский но почему-то всегда открывается ru но уже с английским языком. http://127.0.0.1:8000/ru/