Уведомления

Группа в Telegram: @pythonsu

Уведомления

  • Found 3494 posts.

Python для новичков » Компиляция Питона в ехе файл. » Окт. 24, 2017 13:08:08

Написал не большую программку для пакетной обработки изображений.
Использовал модули
 import os
import numpy
import cv2
import shutil
import math
from PIL import Image, ImageEnhance
Пытаюсь её закомпилировать фрезой cx_Freeze.
При запуске полученого ехе фала получаю:

C:\Users\Александр\PycharmProjects\Imagepacket\build\exe.win32-3.6>Imagepacket.exe
Traceback (most recent call last):
File “C:\Python\lib\site-packages\cx_Freeze\initscripts\__startup__.py”, line 14, in run
module.run()
File “C:\Python\lib\site-packages\cx_Freeze\initscripts\Console.py”, line 26, in run
exec(code, m.__dict__)
File “Imagepacket.py”, line 2, in <module>
File “C:\Python\lib\site-packages\numpy\__init__.py”, line 142, in <module>
from . import add_newdocs
File “C:\Python\lib\site-packages\numpy\add_newdocs.py”, line 13, in <module>
from numpy.lib import add_newdoc
File “C:\Python\lib\site-packages\numpy\lib\__init__.py”, line 8, in <module>
from .type_check import *
File “C:\Python\lib\site-packages\numpy\lib\type_check.py”, line 11, in <module>
import numpy.core.numeric as _nx
File “C:\Python\lib\site-packages\numpy\core\__init__.py”, line 35, in <module>
from . import _internal # for freeze programs
File “C:\Python\lib\site-packages\numpy\core\_internal.py”, line 9, in <module>
import re
File “C:\Python\lib\re.py”, line 125, in <module>
import functools
File “C:\Python\lib\functools.py”, line 22, in <module>
from types import MappingProxyType
ImportError: cannot import name ‘MappingProxyType’

Использую python 3.6.2 кто посоветует как перевести код в исполнительный файл?

Python для новичков » Рисование UML diagrams from SQL на Python » Окт. 23, 2017 22:16:40

День добрый.
Прошу помощи!
Задача выглядит так - нарисовать Uml диаграмму классов по исполняем процедуре в БД. Готового решения не нашел. Бд специфическая - Teradata. Разбор запросов предпологал реализовать через re, но вот с отрисовкой собранных даных на экран возникли проблемы. ничего подобного ранее не использовал, гугление “в лоб” результата не принесло. подскажите, может у кого в практике подобное было или есть на примете библиотека для рисования подобного.

Data Mining » Парсинг чата на Adobe Flash » Окт. 23, 2017 17:33:04

Привет!
Есть вебинар канал на платформе от webinato.com. Он работает на Flash и представляет из себя 4 окна:
- список участников
- видео трансляция монитора ведущего
- чат окно, куда могут писать все участники
- чат окно, куда пишут только модераторы

Хотелось бы вытаскивать сообщения от модераторов для дальнейшего парсинга
Есть ли в принципе такая возможность или нет? Может есть какие-то инструменты которые позволяют это сделать?

Python для новичков » Скрипт для мониторинга системных ресурсов с последующим выводом в область уведомлений » Окт. 23, 2017 16:30:13

Здравствуйте. Загорелся идеей создать скрипт для вин10, который бы работал как в линукс системах с конфигурируемым баром (i3, awesome и т.д.). К тому же среди всех имеющихся в интернете я не нашел ни одного, который бы удовлеторял мои нужды. Но опыта не хватает, особенно в работе с виндоус, прошу подсказать несколько моментов. Работу скрипта я представляю так: происходит мониторинг в реальном времени системных ресурсов (загрузка цпу, температура цпу, загрузка гпу, температура гпу, загрузка озу, загрузка свопа и прочие) и в виде отдельных показателей для каждого ресурса, отображает их в области уведомлений. Вопросы следующие:
1) Каким модулем и бибиотекой пользоваться для получения данных об этих ресурсах?
2) Что использовать для создания графики в данном случае?
Для универсальной скрипт претендовать не будет, исключительно личное использование.

Python для новичков » Не получается выгрузить фото из ВК (модуль VK) » Окт. 23, 2017 08:24:19

Подскажите, почему не выгружаются фото из фотоальбома ВКонтакте? Токен рабочий, с правами на доступ к фото, просто я его здесь не писал. Приложение ВК создано, включено.
 from urllib.request import urlretrieve
import vk, os, time, math
session = vk.Session(access_token="[u]Мой токен[/u]")
vkapi = vk.API(session)
url = input("Введите url альбома: ")
album_id = url.split('/')[-1].split('_')[1]
owner_id = url.split('/')[-1].split('_')[0].replace('album', '')
print("album id: ", album_id)
print("owner_id: ", owner_id)
photos_count = vkapi.photos.getAlbums(owner_id=owner_id, album_ids=album_id)[0]["size"]
counter = 0  # текущий счетчик
prog = 0  # процент загруженных
breaked = 0  # не загружено из-за ошибки
time_now = time.time()  # время старта
# Создадим каталоги
if not os.path.exists('saved'):
    os.mkdir('saved')
photo_folder = 'saved/album{0}_{1}'.format(owner_id, album_id)
if not os.path.exists(photo_folder):
    os.mkdir(photo_folder)
for j in range(math.ceil(
                photos_count / 1000)):  # Подсчитаем сколько раз нужно получать список фото, так как число получится не целое - округляем в большую сторону
    photos = vkapi.photos.get(owner_id=owner_id, album_id=album_id, count=1000, offset=j * 1000)  # Получаем список фото
    for photo in photos:
        counter += 1
        url = photo["src_big"]  # Получаем адрес изображения
        print('Загружаю фото № {} из {}. Прогресс: {} %'.format(counter, photos_count, prog))
        prog = round(100 / photos_count * counter, 2)
        try:
            urlretrieve(url, photo_folder + "/" + os.path.split(url)[1])  # Загружаем и сохраняем файл
        except Exception:
            print('Произошла ошибка, файл пропущен.')
            breaked += 1
            continue
time_for_dw = time.time() - time_now
print("\nВ очереди было {} файлов. Из них удачно загружено {} файлов, {} не удалось загрузить. Затрачено времени: {} сек.". format(photos_count, photos_count-breaked, breaked, round(time_for_dw,1)))

Web » Сеть » Окт. 21, 2017 20:16:32

Ку парни, недавно писал про django и nginx, вроде что то получилось. А сейчас возник другой вопрос. Вопрос следующий, на сервере стоит virtual box, на виртуалке ubuntu, ubuntu получила ip адрес корпоративной сети. Что нужно сделать что бы другие компы в этой сети могли заходить на сайт что на ubuntu?

Python для новичков » Бот в телеграм. Как научить бота скачивать файлы(текстовые), которые ему присылают пользователи? » Окт. 19, 2017 22:10:40

bot = telebot.TeleBot(helpbot.token)

@bot.message_handler(content_types

p = bot.get_file(message.document.file.id)

file = requests.get('https://api.telegram.org/file/bot{0}/{1}'.format(API_TOKEN, p.file_path))


Этот вариант кода не работает. В третьей строчке ошибка invalid syntax. Не могу понять, что не так?

Web » flask sqlalchemy как удалить MtM » Окт. 18, 2017 15:11:39

Модель
 exercise = db.Table(
    'exercise',
     db.Column('programm_id', db.Integer, db.ForeignKey('programm.id'), primary_key=True),
     db.Column('exercise_id', db.Integer, db.ForeignKey('exercises.id'), primary_key=True)
)
class Programm(Base):
    __tablename__ = 'programm'
    user_id = db.Column(db.Integer, db.ForeignKey('auth_user.id'))
    name = db.Column(db.Text)
    exercise = db.relationship('Exercises', secondary=exercise, lazy='subquery',
                               backref=db.backref('programm', lazy=True),
                               cascade='all, delete-orphan', single_parent=True)

вьюха
 def delete_programm(id):
    form = IdForm(formdata=MultiDict({'id': id}))
    if not form.validate():
        return jsonify(error='Проверьте введеные данные!')
    instance = Programm.query.get(form.id.data)
    if instance is None:
        return jsonify(error="Object does not exist")
    if not instance.user_id == current_user.id:
        return jsonify(error='Отказано в доступе')
    try:
        db.session.delete(instance)
        db.session.commit()
    except SQLAlchemyError:
        return jsonify(error='Не удалось сохранить. Попробуйте позже.')
    return '', 200

Возвращается статус 200, но ничего не удаляется. Что не так?

Python для новичков » Проблема с запуском. » Окт. 17, 2017 14:39:37

Всем привет! Я, юный падаван, решил начать учить питон. Купил книгу (Майкла Доусона) дошел до пункта запуска программы и встретил проблему. при запуске IDLE(python GUI) ничего не происходит, а при запуске python (command line) вылазит нужное мне окно. Я вот задался вопросом, все ли нормально или нет?
у меня Win10, может из-за ее что не так)

Python для новичков » Прочитать все сообщения без удаления (kombu, RabbitMQ) » Окт. 17, 2017 11:03:12

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

Только начал работать с rabbit (использую kombu), и столкнулся с проблемой при чтении сообщений из очереди.
Логика такова, что прежде, чем удалять сообщения из очереди, нужно провести ряд проверок и ковертаций в полученных данных, и только в случае успеха, можно грохнуть очередь.
Но я вижу, что позволяющий перейти к следующему сообщению метод подтверждения ack() сразу удаляет сообщение.
Делаю так.

 class RabbitMQProcessConsumer(ConsumerMixin):
    def __init__(
            self, host, user, password, exchange, queue, vhost, insist,
            entity):
        self.host = host
        self.user = user
        self.password = password
        self.exchange_name = exchange
        self.queue_name = queue
        self.vhost = vhost
        self.insist = insist
        self.logger = logging.getLogger('graylog')
    def get_consumers(self, Consumer, channel):
        return [Consumer(
            queues=[self.queue],
            on_message=self.on_request,  # callback
            prefetch_count=1,
        )]
    def __enter__(self):
        self.connection = Connection(
            hostname=self.host,
            userid=self.user,
            password=self.password,
            virtual_host=self.vhost,
            insist=self.insist
        )
        try:
            self.connection.connect()
        except (OSError, Exception) as e:
            self.logger.log(**{
                'msg': str(e),
                'level': logging.ERROR,
            })
            raise RabbitMQError(e)
        self.exchange = Exchange(
            name=self.exchange_name,
            type='topic',
            durable=True
        )
        self.queue = Queue(
            name=self.queue_name,
            exchange=self.exchange,
            routing_key=self.queue_name
        )
        return self
    def on_request(self, message):
        print(str(message.body))  # как бы так не удалять
        message.ack()
    def __exit__(self, exc_type, exc_val, exc_tb):
        self.connection.release()

Конечно, можно запихнуть какой-то обработчик между получение body и ack() конкретного сообщения, но хотелось бы обработать/проверить их все сразу, т.к. логика у них однообразная и к тому же процессинг затратен.
Но возможно существует стандартный метод прочитать все (на данный момент времени) сообщения из очереди, а только потом, при желании удалить их?

Заранее спасибо за ответы и возможные советы.

Python для новичков » метод одномерной нелинейной оптимизации - метод золотого сечения » Окт. 15, 2017 13:35:17

Здравствуйте. Помогите на основе блок - схемы написать код.
 from math import pow, abs
def f(x):
    x = (a + b) / 2 
    R = f(x) = pow(x, 2) + 2*x
# ввод значений
a = float(input('Введите начало отрезка: '))
b = float(input('Введите конец отрезка: '))
eps = float(input('Введите точность: '))
# Вычисляем значения функций f(x1), f(x2)
x1 = a + 0.382 * (b - a)
x2 = b - 0.382 * (b - a)
f(x1) = pow(x1, 2) + 2*x1
f(x2) = pow(x2, 2) + 2*x2
while (True):   
    if (f(x1) < f(x2)):
        b = x2
    else:
        a = x1
        
        if (math.abs(b - a) < eps):
            return x  
            return R  
            print (x, R)
        else:
            if b = x2:
                x2 = x1
                f(x2) = f(x1)
                x1 = a + 0.382 * (b - a)    
                f(x1) = pow(x1, 2) + 2*x1
            if a = x1:
                x1 = x2
                f(x1) = f(x2)
                x2 = b - 0.382 * (b - a)
                f(x2) = pow(x2, 2) + 2*x2

Центр помощи » Как работают очереди задач? » Окт. 14, 2017 12:52:42

В документации python-rq написано, что используется fork() и сериализация. Но что в итоге в редисе, сериализованная функция? И как она выполняется? Получается порождается новый поток, но как он переходит к точке вызова функции?

Python для новичков » Зациклить программу с двумя функциями » Окт. 12, 2017 17:13:59

Здравствуйте. Программа “угадай мелодию” для бота в Телеграмме.
1 функция: подключаемся к БД, берем строку и бот отправляет аудиофайл с вариантами ответа игроку.
2 функция: проверяет здесь ли игрок и проверяется правильный ли ответ от игрока или нет
Имеется 2 вопроса
1. Как зациклить бота, чтобы он выдавал песни по очереди допустим 4 раза и чтобы эти песни были уникальными. (Пытался через for и while, но что-то делаю не так)
2. (Необязательно) Касается библиотеки ‘telebot’, как создать кнопки, хочет ли игрок продолжить игру или нет и чтобы эти кнопки пропали после выбора.
Если не сложно, то с объяснениями) Заранее спасибо.

 @bot.message_handler(commands=['game'])
def game(message):
    db_worker = SQLighter(config.database_name)
    row = db_worker.select_single(random.randint(1, utils.get_rows_count()))
    markup = utils.generate_markup(row[2], row[3])
    bot.send_voice(message.chat.id, row[1], reply_markup=markup)
    utils.set_user_game(message.chat.id, row[2])
    db_worker.close()
@bot.message_handler(func=lambda message: True, content_types=['text'])
def check_answer(message):
    answer = utils.get_answer_for_user(message.chat.id)
    if not answer:
        bot.send_message(message.chat.id, 'Чтобы начать игру, выберите команду /game')
    else:
        keyboard_hider = types.ReplyKeyboardRemove()
        if message.text == answer:
            bot.send_message(message.chat.id, 'Верно!', reply_markup=keyboard_hider)
        else:
            bot.send_message(message.chat.id, 'Неправильно', reply_markup=keyboard_hider)
        utils.finish_user_game(message.chat.id)
if __name__ == '__main__':
    utils.count_rows()
    random.seed()
    bot.polling(none_stop=True)

Центр помощи » Тестирование через selenium  » Окт. 9, 2017 05:24:29

Пишу тесты с использованием selenium, нужно запускать несколько браузеров. Я подумал может быть сделать очередь в которую помещать объекты браузера пока он открывает страницу, то есть в очереди будут уже готовые для тестирования страницы. Смысл в том чтобы не ждать пока загрузится станица. Как это лучше реализовать? Делать очередь или есть способ по лучше?

Python проекты » Ищем Python-разрабочика для парсинга данных из Wiki и Google Maps о населенных пунктах » Окт. 3, 2017 17:14:41

Необходимо собрать информацию об административных единицах и населенных пунктах для конкретной страны из открытых источников, включая Википедию и Google Maps. На каждой странице админ. единицы в Википедии есть блок, где находится информация о названии, населении, высоте над уровнем моря, площади и т.д. – набор данных может отличаться в зависимости от уровня админ. единицы в иерархи админ. деления страны.

Функционал сборщика уже реализован, но должен быть расширен в зависимости от количества свойств в блоке со сводными данными на страницах Википедии. В отдельном документе изложено как адаптировать скрипты под анализ новой страны и сбора данных по ней. Последовательно описаны шаги для удобного подключения новой страны в систему, код парсера описан по методам.

В проекте используются инструменты:
python 3.6
mongodb 3.4
Flask 0.12

Ожидаемый результат – таблица, содержащая структурированныеданные по всем административным единицам страны, приведенные к единому формату (для нетекстовых значений: площадь – в квадратных километрах, высота над уровнем
моря – в метрах и т.п.). Результирующий документ должен включать в себя максимально точные значения (названия без «шума», полную административную структуру страны, дополнительные свойства местоположения и указатели на
источники).

Если вас заинтересовал этот проект, то пожалуйста укажите желаемый уровень оплаты.

Флейм » Проконсультировать по работе с Heroku » Окт. 2, 2017 23:15:32

Я не программист, меня нужно проконсультировать, чтобы с вашим сопровождением выложили код на облачных платформах Heroku и Google Cloud Platform. Оплата 3000 руб. Нужно проконсультировать как это сделать через TeamViewer или Skype (провести по алгоритму). Нет времени самому разбираться и в середине переноса кода выдает ошибки. Есть готовый код (Python), есть аккаунты во всех указанных выше платформах.

Центр помощи » Помогите решить пожалуйста задачу на питоне 3+ » Сен. 30, 2017 20:34:13

Напишите робота для автоматической торговли акциями на бирже.

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

Программа должна вывести цену акций, по которой мы их купили, цену, по которой продали, и выгоду с каждой акции (возможно, отрицательную).

Не следует пользоваться советами этого робота в реальной жизни.

Формат ввода
Несколько целых чисел — цены акций в последовательные дни.
Число 0 — сигнал прекращения ввода цен.

Формат вывода
Три целых числа — цена покупки, цена продажи, выгода.

Пример
Ввод Вывод
32 31 37 6
30
31
34
38
37
39
0

Флейм » Исправте одну вещь с просмотрами » Сен. 30, 2017 19:01:10

Пишу администрации этого форума - исправте систему подсчитывания просмотров.
Сделайте, чтобы твой просмотр твоей темы не засчитывался в общие просмотры.

Центр помощи » Спички » Сен. 25, 2017 02:42:42

Доброго времени суток! Хотелось бы получить помощи в решении задачи.
Условие
Вдоль прямой выложены три спички. Необходимо переложить одну из них так, чтобы при поджигании любой спички сгорали все три. Для того чтобы огонь переходил с одной спички на другую, необходимо чтобы эти спички соприкасались (хотя бы концами).
Требуется написать программу, определяющую, какую из трех спичек необходимо переместить.
Формат ввода
Вводятся шесть целых чисел : l₁,r₁,l₂,r₂,l₃,r₃ –– координаты первой, второй и третьей спичек соответственно (0 ≤ lᵢ < rᵢ ≤ 100). Каждая спичка описывается координатами левого и правого концов по горизонтальной оси OX.
Формат выводаВыведите номер искомой спички. Если возможных ответов несколько, то выведите наименьший из них. В случае, когда нет необходимости перемещать какую-либо спичку, выведите 0. Если же требуемого результата достигнуть невозможно, то выведите -1.
Примеры
Тест 1
Входные данные:
0 2 4 5 3 6
Вывод программы:
1
Тест 2
Входные данные:
1 2 9 10 12 20
Вывод программы:
3
Тест 3
Входные данные:
1 5 0 1 4 8
Вывод программы:
0
Наверняка кто-то сталкивался с такой задачей и сможет указать мне на мои ошибки. Эти тесты проходит, но выдает ошибку на 5
Вот собственно код
 l1 = int(input())
r1 = int(input())
l2 = int(input())
r2 = int(input())
l3 = int(input())
r3 = int(input())
if r1 >= l2 and (r2 >= l3 or r1 >= l3):
    print(0)
elif r2 + r1 - l1 >= l3:
    print(1)
elif r1 + r3 - l3 >= l2:
    print(3)
elif r2 + r1 - l1 >= l3 and r1 + r3 - l3 >= l2:
    print(1)
else:
    print(-1)