Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Python

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

Открыть новую тему     Написать ответ в эту тему

Adm10



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здесь обсуждается всё, что связано с использованием Python: программирование, библиотеки, ресурсы и другие вопросы

Python


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

С чего начать?
Простой, понятный и вместе с тем грамотный ресурс на русском языке: pythonworld.ru + самоучитель
Библия PEP8

Всего записей: 35 | Зарегистр. 13-10-2006 | Отправлено: 15:48 16-06-2007 | Исправлено: shrmn, 22:22 07-03-2021
Ivanovi4

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ! кто-то сталкивался с распознаванием лиц на питоне?? что-то по типу searchface или findclone? Если конкретно, то библиотеки dlib, nmslib. Есть пару вопросов, можно в пм. Заранее благодарен!

Всего записей: 28 | Зарегистр. 26-02-2021 | Отправлено: 10:27 27-02-2021
destiny child



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую!
Есть функция, которая обращаясь к серверу по его API  получает список текущих дел на сегодня.
Его получаешь и выводишь в календаре.
НО тут выяснилось, что на каждое дело надо еще получить доп. инфу с ДОП. обработкой. И выводить в спецокне по щелчку на событии в календаре.
Сделал "в лоб" - получил по прежнему список дел - далее надо пройтись по нему и по каждому идентификатору дела получить доп.инфу, загнать в доп.функцию обработчика и итоговый результат "добавить" к i-ому делу. В итоге "простой" прежний список дел превращается в полноценно "сложный" список дел. Вроде и хорошо, но... время выполнения общей функции "Получить_список_дел" увеличилось почти в 3 раза.
Значит что-то где-то надо бы параллельно запускать. Но моего опыта не хватает понять - а что тут вообще можно перекинуть в "параллельность"? Ибо, пока не получишь весь изначальный список дел - не узнаешь ID всех дел. Только потом каждый ID надо еще и обработать - послать по сути еще один запрос на основе ID, обработать его результат и прикрепить его к изначальной строке данных "простого" i-ого дела, тем самым, получив "сложное" i-ое дело.
Т.е. я не вижу возможности что-то параллельно тут крутить, т.к. данные поступают только последовательно. Так ли это? Или что-то я упускаю из виду?

Всего записей: 3275 | Зарегистр. 01-04-2006 | Отправлено: 21:37 05-03-2021 | Исправлено: destiny child, 21:39 05-03-2021
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
destiny child

Цитата:
Значит что-то где-то надо бы параллельно запускать.

либо изучать API, возможно есть возможность получить и то и то сразу, либо передавать массив идентификаторов, а не по одиночке.

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 23:04 05-03-2021
destiny child



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii (пост)
Цитата:
возможно есть возможность получить и то и то сразу

этого нет точно.
Mavrikii (пост)
Цитата:
передавать массив идентификаторов

типа натырить из первого запроса все айди, а потом насоздавать пул работ по их обработке?
Допустим, но как результаты по каждой работе добавить к карточке Дела, которое связано с текущей обрабатываемой работой по АйДи? Пул работ, как я понимаю, всегда независим от другого тела кода. И то - ЧТО там было обработано - негарантированно можно потокобезопасно передавать в ОБЩЕЕ тело кода. А все исходные объекты изначально-то вообще простые строки. Те же карточки дел - строки JSON. И наружу надо лишь строку со всем набором карточек дел выдавать....
В итоге кажется мне правильно кажется, что хрен эту работу сделаешь быстрее....

Всего записей: 3275 | Зарегистр. 01-04-2006 | Отправлено: 11:48 06-03-2021 | Исправлено: destiny child, 11:53 06-03-2021
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
destiny child

Цитата:
типа натырить из первого запроса все айди, а потом насоздавать пул работ по их обработке?

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

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 21:12 06-03-2021
destiny child



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii (пост)
Цитата:
большинство нормальных API

но этот, увы, не такой. Там строго по одному ID передаешь - и только для него получаешь доп.инфу. Массивов нет, не предусмотрены.
НО и насчёт ограничений вы правы. Нашел, что принимают не более 5 запросов в секунду. Тупик мать их....

Всего записей: 3275 | Зарегистр. 01-04-2006 | Отправлено: 11:40 07-03-2021
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
destiny child

Цитата:
Тупик мать их

только если кэшировать ответы, чтобы не было лишних запросов.
но лучше связаться с разработчиками и выяснить, может добавят возможность.
либо сами что то упускаете.

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 21:34 07-03-2021
harrykkk



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Gh0sTG0

Цитата:
Pandas надо будет доустанавливать?

Да, в командной строке

Код:
pip install pandas

В какой-нибудь папке создаете файл (utf-8), например, excel.py

Код:
import os
import pandas as pd
 
 
dir_in  = 'Excel_In'
dir_out = 'Excel_Out'
 
if not os.path.exists(dir_out):
    os.mkdir(dir_out)
file_out = "{}/output.xlsx".format(dir_out)
 
# Получаем список файлов в папке dir_in в переменную files
files = os.listdir(dir_in)
 
df_ = pd.DataFrame()
 
for file in files:
    path_ = '{}/{}'.format(dir_in, file)
    df_file = pd.read_excel(path_)
    df_ = df_.append(df_file, sort=False)
 
df_.to_excel(file_out, index=False)

Рядом создаете папку Excel_In и в нее ложите ваши 40+ файлов
Запускаете excel.py. Рядом будет создана папка Excel_Out, а в ней результирующий файл output.xlsx
 
Скрипт обрабатывает все файлы в папке Excel_In и в скрипте нет обработчиков ошибок, поэтому в папке Excel_In не должно быть ничего, кроме нужных вам .xlsx файлов и все они должны иметь одинаковую структуру (один лист и одна таблица в нем, одинаковые количество и порядок столбцов)

Всего записей: 9020 | Зарегистр. 24-02-2013 | Отправлено: 16:52 12-05-2021 | Исправлено: harrykkk, 17:23 12-05-2021
Gh0sTG0

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
harrykkk
И тут привет =)
Спасибо.
Сделал так что скрипт запустился. Но...
Он берет юрлы из ~3 файлов из 34. При том не подряд, а где то... Один первый, второй ближе к середине, третий ближе к концу...
Кстати, а можно этот скрипт переделать так, чтобы он просто добавлял пустой столбец слева в каждый файл? Мб будет удобнее, да и при сборке excel автоматом фильтры прикручивает на каждый столбец, да и выглядит оно как то... поприличнее, однако.

Всего записей: 64 | Зарегистр. 27-07-2015 | Отправлено: 18:27 12-05-2021 | Исправлено: Gh0sTG0, 18:28 12-05-2021
harrykkk



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Gh0sTG0

Цитата:
Он берет юрлы из ~3 файлов из 34

Видимо все-таки структура файлов немного отличается. Вы мне дали пример на две страницы (2 файла) и они оба объединились корректно, т.е. ссылки есть. Дайте ссылку на ваши 34 файла.

Всего записей: 9020 | Зарегистр. 24-02-2013 | Отправлено: 18:47 12-05-2021
Gh0sTG0

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
harrykkk
Ща закину архивом всю свою папку. Глянь мб я где чего косякнул или еще чего?
https://drive.google.com/file/d/1rAS-4voSfqaiwtvyRk0Xt7oIQ_oKa0dS/view?usp=sharing
Вот мой архив. В нем лежат файл .py и папка с экселями.
Работаю в win10х64.

Всего записей: 64 | Зарегистр. 27-07-2015 | Отправлено: 18:51 12-05-2021 | Исправлено: Gh0sTG0, 18:54 12-05-2021
harrykkk



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Gh0sTG0
Бред, конечно. Но методом тыка обнаружил такое. И Pandas и сам Excel объединяют файлы корректно, если во всех исходных файлах выделен весь первый столбец со ссылками, а не только первая ячейка. При этом пустой столбец в начале добавлять не нужно.
Т.е. нужно открыть все исходные файлы и выделить в них весь первый столбец со ссылками и затем сохранить. После этого можно объединять или Питоном или Экселем

Всего записей: 9020 | Зарегистр. 24-02-2013 | Отправлено: 20:04 12-05-2021 | Исправлено: harrykkk, 20:04 12-05-2021
Gh0sTG0

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
harrykkk
А можно как то пандасом тупо insert пустой столбец прямо в beginning? Прямо тупо во все файлы что есть в папке?

Всего записей: 64 | Зарегистр. 27-07-2015 | Отправлено: 20:35 12-05-2021
harrykkk



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Gh0sTG0

Цитата:
можно как то пандасом тупо insert пустой столбец

Можно. Я уже пробовал, не помогает. Ссылки все равно теряются.
Похоже вам снова сюда.
Нужен макрос, который в цикле откроет все исходные файлы в папке, выделит в них первый столбец и пересохранит. Или во всех файлах заменит ссылки-формулы

Код:
=ГИПЕРССЫЛКА("https://www.list-org.com/company/50264";"https://www.list-org.com/company/50264")

на текстовые

Код:
https://www.list-org.com/company/50264

Похоже на то, что ссылки в виде формул ни Pandas ни сам Excel корректно обрабатывать не умеют

Всего записей: 9020 | Зарегистр. 24-02-2013 | Отправлено: 20:47 12-05-2021
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Gh0sTG0

Цитата:
Он берет юрлы из ~3 файлов из 34

потому, что они есть только в 3 файлах: list (1).xlsx, list (2).xlsx, list (3).xlsx
это даже по размерам файлов видно (на 6 кб больше только эти три).

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 20:57 12-05-2021 | Исправлено: Mavrikii, 20:58 12-05-2021
Gh0sTG0

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
А вот это не понял. У меня ссылки есть везде.
Хотя да, мне тоже странно про размер, да.

Всего записей: 64 | Зарегистр. 27-07-2015 | Отправлено: 21:00 12-05-2021 | Исправлено: Gh0sTG0, 21:00 12-05-2021
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Gh0sTG0

Цитата:
У меня ссылки есть везде.

нету. еще раз - посмотрите на размеры файлов. только указанные выше по 16 кб, остальные по 10 кб.
в остальных в Excel 2019 первый столбец пустой, только шапка.

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 21:00 12-05-2021 | Исправлено: Mavrikii, 21:02 12-05-2021
Gh0sTG0

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Уважаемый, а вы файлы ОТКРЫВАТЬ не пробовали?
Вот вам, к примеру, list (6). Тот самый, в котором по вашему, ссылок нету.
Но тогда что это?:
https://www.screencast.com/t/wWQjvaSqeJpP

Всего записей: 64 | Зарегистр. 27-07-2015 | Отправлено: 21:02 12-05-2021
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Gh0sTG0

Цитата:
а вы файлы ОТКРЫВАТЬ не пробовали?

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

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 21:04 12-05-2021 | Исправлено: Mavrikii, 21:08 12-05-2021
Gh0sTG0

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Ок... Я тут тоже потыкался...  
Перекачал файлы с 0.
Они ВСЕ весили 10кб.
Разблокировка ничего не меняет. Ни в самом экселе, ни в свойствах файла.
Я открыл файл. Выделил 1й столбец. Сохранил файл.
Файл стал весить 16кб.
Теперь скрипт может забрать юрлы из каждого файла с выделенным первым столбцом.
Осталось понять как мб VBAшно заменить =ГИПЕРССЫЛКА(" и.т.п. на чисто текст ссылки разом везде. Мб поможет.
И да, те три файла... Это те файлы, которые я у себя в рамках эксперимента разлочил и потыкался. При сохранении они из 10 в 16 стали... Видать 2019 excel чего то дописывает... Стили там мб, или еще чего.

Всего записей: 64 | Зарегистр. 27-07-2015 | Отправлено: 21:09 12-05-2021 | Исправлено: Gh0sTG0, 21:12 12-05-2021
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Python


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru