Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы: https://ideone.com/ - возможность постить листинги кода и онлайн-запуска, не требует регистрации https://dumpz.org/ - можно постить листинги, не требует регистрации https://pastebin.com/ - для листингов, регистрация не обязательна https://www.codepile.net/ - можно расшарить код в том числе на редактирование, особая полезная опция - чат при каждом листинге, где можно код обсудить https://pyfiddle.io/ - запуск python кода онлайн, но чтобы шарить, надо регистрироваться
Вопросы-ответы: А стоит ли читать Лутца, том номер N? Мнения в треде разделены. Кто-то за (очень неплохая база даётся), кто-то против (слишком много воды и объём книг убивает всё рвение). В общем — решать тебе, книга вредна не будет, но ты можешь её просто не дочитать и забросить.
Стоит ли читать %книга_нейм%, если там питон версии 2.х? Нет, не стоит. 100% есть более актуальная книга, для пистона 3.х
А что ещё можно читать? Питон сам по себе очень хорошо задокументирован и для уровня начинающих, и для продвинутого. Смотри официальную документацию. Можно начать вот с этого https://docs.python.org/3/tutorial/introduction.html
Что можно почитать/посмотреть по многопоточности/параллелизации в питоне, да и вообще в целом? Очень годный ролик на американском языке про многопоточность и асинхронность https://www.youtube.com/watch?v=MCs5OvhV9S4
А как учить джангу? Нахожу только книги по джанге 1.х У джанги отличные доки (одни из лучших для пистоновских либ, имхо), почитай их для начала. Книгу по джанге можно читать и для версий <2, это не проблема, т.к. принципы остаются теми же. Для переката на 2.х хватит changelog`a или тех же самых доков/статей. Начни изучать с разбора учебного приложения с голосовалкой из официальной документации.
В ньюфаг-треде написано, что нужно начинать с SICP, чтобы научиться программировать Вот, пожалуйста, та же самая программа, но переработанная под язык Python: http://composingprograms.com/ (нужно знать ангельский или уметь пользоваться переводчиком)
Дайте нормальные книжки на русском! Мы, блядь, не в пиндосии живём Брат, смотри книжки по ссылкам в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.
Шлю письмо со своего мыла на другое свое при помощи библиотике smtplib, письмо приходит - но содержание приходит закодированное в ютф-8, на каком этапе я должен его раскодировать? без ютф-8 оно ж не уйдет(я проверял).
>>1627339 Я думаю потому что в питоне нет переменных, а есть ссылки на объект. Ты ссылаешь на один и тот же обхект - список, его и сортируешь, ссылка обновляется.
бля челы, как мне прикрутить автоматическую авторизацию себя в своем же телеграмм боте? ибо на хероку нет консоли(нету же?), а мне при запуске бота нужно ввести номер, получить на него код в телегу и вставить его обратно в консоль или может как-то в докер файл можно засунуть обработку консольного ввода?
>>1627649 Обычно в библиотеках для телеги есть скрипт генерирующий сессию как файл. То есть телефон надо подтвердить только в первый раз, оно сгенерирует файл, и каждый следующий раз по файлу будет авторизоваться. Файл нужно закомитить
>>1627361 Гугли понятия "мутабельность" и "имутабельность".
Тлдр некоторые объекты изменяются, то есть мутируются, если с ними работать, другие нет. Списки мутабельны. Когда ты делаешь список.сорт(), то тебе не создаётся новый отсортированный список, а изменяется тот который ты хочешь отсортировать.
>>1627663 Если у тебя насколько переменных для одного списка, список все ещё один. Чтобы скопировать список в новую переменную используй функцию copy из модуля copy
Горит пердак с вашего программирования, как и с линукса. Какая-нибудь ошибка ебаная так всё пиздец, копаться в ебучих интернетах, что не так искать У всех так?
>>1627751 А ка ты на ошибки в других областях реагируешь? Ну типа начала вода у тебя откуда-то капать, а ты даже не знаешь, откуда конкретно. Что делать будешь?
>>1627758 Сегодня например, надо было поставить pip, поставил походу не ту версию. Понял что сейчас блять начнётся. Решил просто снести пайчарм и установить заново, вместо него снес зачем-то анаконду, которая удалялась пол дня. Пошёл смотреть вебинар по сетям, потом подумал нахуй мне эти сети, пошёл спать
>>1627762 Есть несколько опций, я лично бахнул бы регекспы, потому что люблю: import re pattern = re.compile(".[0-9].") A = ['m24534', 'hello', '13000'] B = [a for a in A if not pattern.match(a)]
>>1627775 Они везде за каждым углом, просто в остальных областях за тебя кто-то уже большую часть работы проделал и большинство ошибок предусмотрел. Как и в повседневном использовании компьютера: кран открыл - потекло видео с твича, закрыл - остановилось. А всякие водонапорные башни, очистные сооружения, воздушные клапаны - это тебя вообще не интересует. И тут ты такой приходишь и начинаешь рандомно свой дизайн насоса изобретать, естественно, у тебя "ошибки за каждым углом".
>>1627780 >Спасибо, но вот это не понял Регекспы знаешь как работают? Там должно быть pattern = re.compile(".∗[0-9].∗") но макаба простые звёздочки съела, а ты не разобравшись скопировал, поэтому не работает.
>>1627804 >Как насчёт списка строк? Будет дропать всю строчку, если там есть хоть одна цифра.
>И ещё раз Если ты совсем не понимаешь, как работают регекспы, то лучше воспользуйся первым способом из твоего ответа. Если не понимаешь и его, то можем попробовать разобраться по частям с ним, а вот регекспам я тебя учить не буду.
Сап, на чём делать фронт для сайта? Bootstrap вроде все засирают последнее время, нужно осваивать React? Или можно обойтись чем-то попроще для backend разраба?
>>1627933 Тогда 'asfa fs ' не пройдёт. Я лично не знаю, что у него там будут за строки, поэтому просто беру самый прямой (в моём понимании) путь. Найти цифры (регекспом, значит быстро), выкинуть, если успешно.
>>1627269 (OP) Дублирую из прошлого треда: Аноны, посоветуйте материалы для вкатывания в асинхронность. Активно курю статейки и видосы по asyncio, но такое чувство, словно чего-то фундаментального не знаю, о чём в них не говорят.
А как можно преобразовать список в словарь? Допусти изначально была просто строка текста, которая разбита на слова(около 600) и добавлена в список. Возможно ли добавить их в словарь используя в качестве ключей, а в качестве значений использовать нули?
Есть задание, где нужно написать класс, выполняющий функции листа, но, как написано, "не являющийся наследником листа". Что это вообще значит? Как-то можно наследовать от дата-типа?
Сап, есть две книги в электронном виде: Лутц "Изучаем Питон" четвертое издание и пятое, но к пятому нигде нет второго тома. Не обосрусь ли я, если начну изучать по пятому, а недостающие главы изучу по четвертому?
>>1628296 По-моему, чистой регуляркой это не решается. Нужно матчить все слова и прогонять через коллбэк/эвал. Надо смотреть, есть ли такой функционал.
>>1628232 Человек, который не делает ошибок, завладел бы миром за один месяц. Но человек, который не учится на своих ошибках, не владеет ничем. Конечно, если человек одновременно и умен и удачлив, он не повторит одну и ту же ошибку дважды. Но он может совершить одну из десятков тысяч ошибок, родственных ей. Семья ошибок так велика, что недостатка в глупостях, которые можно совершить, не ощущается никогда. Ошибку извиняет только возможность нажиться на ней.
Весьма ебучий этот тернарный оператор, надо сказать. Вроде хотят сделать чисто и читаемо, а встрачается такое. Могли бы уже тогда сделать без елс для иф однострочников, но хуй вам.
Хотелось бы узнать как работают парсеры с динамичными сайтами, где контент подгружается отдельными запросами в браузере. Например как можно сделать парсер тредов в /b/, если чтобы получить список новых тредов, надо проскролить вниз до упора? Вроде можно просто парсить сразу /catalog.html ибо там все одним запросом подгружается, но мне интересно что делать в первом случае?
>>1628889 >Без использования всяких индуских селениумов, Зря, селениум отличная вещь и если у тебя сайт на сайте куча ЖСа, который грузит контент - без селениума будешь устраивать танцы с бубнами
Всегда смешно с дебилушек, использующих селениумы или хедлес браузеры. Тебе же сразу дают готовые эндпоинты с данными вместо хтмл. Бери да грабь. Достаточно походить по сайту и записать все ходящие запросы. Для этого есть куча тулз вроде fiddler, charles, burp suite.
>>1628906 Такой вопрос, как в вскоде настроить пременные среды без создания .env и импорта dotenv Допустим в пичарме есть вот такая менюфка, как тоже самое сделать в вскоде?
Билэт, кто-то в курсе что этому Пичарму ебучему не так? Почему он ругается на super() без аргументов и пиздит что типо в Питоне 2.7 так нельзя, у меня 3.7.6 версия, ало бля Всю жизнь писал super() и никто на меня не ругался. Впервые такое, че за хня?
Подскажите пожалуйста. Как эту фигню можно с помощью NumPy запилить? Да и вообще интересуют самые оптимальные варианты на ваш взгляд. Не хочу опять херь на 30 строк городить.
> Имеется файл с данными по успеваемости абитуриентов. Он представляет из себя набор строк, где в каждой строке записана следующая информация:
> Поля внутри строки разделены точкой с запятой, оценки — целые числа. Напишите программу, которая считывает файл с подобной структурой и для каждого абитуриента выводит его среднюю оценку по этим трём предметам на отдельной строке, соответствующей этому абитуриенту. Также в конце файла, на отдельной строке, через пробел запишите средние баллы по математике, физике и русскому языку по всем абитуриентам.
>>1629041 Ну раз это математическая хуйня, то читаешь в двухмерный массив, а там среднее по строкам будет по студентам, а среднее по столбцам будет по предметам.
>>1629206 Ладно, сделаю и так и так. from itertools import combinations from functools import reduce shitz = [] for lengh in range(2, len(my_list)): shitz.extend([reduce(lambda a,b: a*b, combination) for combination in combinations(my_list, r=lengh)])
itertools.combinations(iterable, r) Return r length subsequences of elements from the input iterable.
Combinations are emitted in lexicographic sort order. So, if the input iterable is sorted, the combination tuples will be produced in sorted order.
Elements are treated as unique based on their position, not on their value. So if the input elements are unique, there will be no repeat values in each combination.
Roughly equivalent to:
def combinations(iterable, r): # combinations('ABCD', 2) --> AB AC AD BC BD CD # combinations(range(4), 3) --> 012 013 023 123 pool = tuple(iterable) n = len(pool) if r > n: return indices = range(r) yield tuple(pool for i in indices) while True: for i in reversed(range(r)): if indices != i + n - r: break else: return indices += 1 for j in range(i+1, r): indices[j] = indices[j-1] + 1 yield tuple(pool for i in indices)
Есть где адекватное объяснение что и как делают методы во встроенных class based views в Джанге? Писал вьюхи исключительно функциями, но вроде как с помощью классов это делать быстрее и понятнее, хотя только вступил на эту дорожку и уже приземлился очком на бутыль Методов и атрибутов больно дохера и не до конца ясно, как они взаимодействуют, вот есть у нас ListView, у него обязательный метод get_queryset, но по факту я даже не использую его а юзаю get_context_data, где также как и в функции-view строю словарь, который передастся в шаблон
Ну кароче я делол делол нихуя не получаетсо мне надо [[1, 2], [3, 5], [2, 1] , [5, 3]] Дублирующие-обратные списки убрать что бы получилось [[1,2],[3,5]] они вперемешку все и их дохуя Можно использовать только вложенные списки и вложенные циклы никаких сверх технологий.
>>1629354 Надо просто в списке исключить вложенные зеркальные списочки. Они вложенные (списочки) всегда содержат по два числа[ [1, 2], [33, 42] , [2, 1], [42, 33] ] , списочков сколько угодно но количество четное потому что есть основной и есть зеркало. Мне пох какие оставлять главное что бы одна сторона зеркала была.
Скажите, как вывести график? Я тупой, тк с Питоном не встречался, а график вывести надо, он уже построен даже.
Предыстория Делаю систему производственного планирования MES где есть блок автоматического составления производственного расписания с точностью до единицы операции, сама система у меня вообще на другом, но сам вычисляющий скрипт на Питоне (потому что на другом его нет). https://github.com/guillaumebour/flexible-job-shop
У меня задача данные передать в этот скрипт в определенном формате и забрать оттуда, переконвертировав обратно в свою систему.
Счас пока тестирую, не могу понять нихуя, что на выходе выходит (только догадываюсь, где что). Для того, чтобы понять, нужно увидеть график. Я в консоле запустил скрипт, он мне рассчитал по тестовым данным. И построил график,
Но график выводится в виде такого кода: https://pastebin.com/jPdrT9aW Я гуглил, это вообще какой-то LaTeX - издательская система. Блять, не понимаю, куда мне вставить эту простыню, чтобы вывелась моя диаграмма Ганта ?
Привет, анон. Прошу помощи в одной задачке. Есть всякие лог файлы, в которых вперемешку идут сообщения. Задача в том, чтобы по некоему ID сообщения необходимо найти сообщения отправки и получения ответа от сервера, связать их, посчитать задержку и распарсить xml запроса и ответа. С парсом xml вопросов нет, это я сделал, равно как и найти начало сообщения. Суть в том, как мне найти и закинуть в какую-нибудь временную переменную текст xml для дальнейшей обработки. Сложность заключается в том, что сообщения идут вперемешку и строка с телом xml идёт без ID, например:
09:33:17,640 [mess-id-10] Incoming message 09:33:17,642 [mess-id-1] Outgoing message 09:33:17,644 [mess-id-10] <?xml version="1.0" encoding="UTF-8"?> --- Вот тут тело xml --- 09:33:17,645 [mess-id-6] Retrieving info 09:33:17,647 [mess-id-10] <?xml version="1.0" encoding="UTF-8"?> -- ValidityCheck - Вот тут засада, т.к. сообщение валидации мне не нужно 09:33:17,647 [mess-id-10] Request validated 09:33:17,647 [mess-id-6] prepared XML document 09:33:17,651 [mess-id-2] <?xml version="1.0" encoding="UTF-8"?> --- Ответ другого сообщения --- 09:33:17,651 [mess-id-2] Exit: LogHandler::invoke 09:33:17,659 [mess-id-1] <?xml version="1.0" encoding="UTF-8"?> --- Ответ другого сообщения ---
Ну и так далее, в общем, в логах полная каша. Сложности добавляем ещё то, что ID сообщения может повторяться спустя полминуты, если предыдущее сообщение с таким же ID завершено (не важно как, успешно или нет), ну и то, что файлы размером около 500 МБ. Как я его обрабатываю - открываю файл и ищу первую строку с текстом Incoming message, беру из неё ID сообщения, время и номер строки. Далее я вновь (sic!) открываю файл и с помощью itertools указываю строку от которой необходимо проводить поиск сообщения с таким же ID. Вот тут у меня проблема, т.к. я пока ищу конец сообщения по Outgoing message, но это неправильно, т.к. между этой строкой и телом xml-сообщения могу влезть другие сообщения. В общем, как только я нахожу конец сообщения, я распихиваю по переменным нужные мне данные и посылаю break. Закономерность такая, что тело xml-сообщения идёт сразу после строки [mess-id-1] <?xml version="1.0" encoding="UTF-8"?>, но я пытаюсь исключить из поиска ValidityCheck и у меня ничего не выходит: for line in islice(pFs, iterBegin, None): subLine += 1 if messageID in line and '<?xml version="1.0"' in line and 'ValidityCheck' not in next(pFs): pass xmlMessage = xmlMessage + str(subLine) + ' ' + line + next(pFs) if messageID in line and messageEnd in line: endTime = dt.strptime(line[0:12], '%H:%M:%S,%f') Принт и так далее break
Буду рад, если кто-нибудь поможет не кодом, так хоть логикой. Кстати, сам конец сообщения выглядит, примерно, так: 09:33:17,698 [mess-id-10] Outgoing message: -- Тут могут быть другие строки 09:33:17,700 [mess-id-10] <?xml version="1.0" encoding="UTF-8"?> --- XML --- 09:33:17,700 [mess-id-10] Exit: LogHandler::invoke
Т.е., по хорошему, конец сообщения мне нужно искать по 'Exit: LogHandler::invoke' с условием, что за две строки перед этим будет идти <?xml version="1.0" encoding="UTF-8"?>, а на предыдущей строке не будет ValidityCheck. Как я полагаю, мне нужно искать '<?xml version' и 'Exit: Log' с одним и тем же ID и всё, что будет между ними мне и нужно, исключая ValidityCheck, но тут мне, пожалуй, не хватает знаний в таком количестве итераций и фильтрации строк, поэтому, я буду даже рад, если кто-нибудь подскажет какой инструмент для этого лучше использовать, а дальше я сам.
Если вам кажется, что я многого прошу, то простите и не пинайте.
>>1629604 Че-то ты путанно объяснил. Возможно, я не совсем понял, но я бы делал примерно так. Читаешь построчно, после детекта начала пихаешь последующие строки в список, отбрасывая такие оформленные 09:33:17,700 [mess-id-10] по регекспу. Ну и после детекта конца прекращаешь.
>>1629617 >>1629611 Пардон, объяснения не мой конёк. Вот лог, я из него убрал всякие данные ненужные, но суть осталась. Если посмотреть, то в нём полноценных законченных только два сообщения с ID 10 и 15. У обоих этих сообщений есть сам запрос в формате xml, валидация и ответ, тоже в формате xml. Вот мне нужно эти xml тушки вытащить и распарсить (кроме валидации), попутно замерив время между запросом и ответом. Т.е., если выполнить скрипт, то он вернёт мне информацию только по двум этим сообщениям. Если просто пихать все строки между началом и концом сообщения в список, то скрипт нехило так память будет кушать, ИМХО.
09:33:17,640 [mess-id-10] Enter: LogHandler::invoke 09:33:17,640 [mess-id-10] Incoming SOAP request: 09:33:17,642 [mess-id-1] committing database transaction 09:33:17,642 [mess-id-1] releasing database connection 09:33:17,642 [mess-id-1] outputResponse..start 09:33:17,642 [mess-id-1] outputResponse..end 09:33:17,642 [mess-id-1] Enter: LogHandler::invoke 09:33:17,642 [mess-id-1] Outgoing SOAP response: 09:33:17,644 [mess-id-6] SUCCESS in query execution 09:33:17,644 [mess-id-6] response code from 09:33:17,644 [mess-id-6] XML API document 09:33:17,644 [mess-id-10] <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body></SOAP-ENV:Body></SOAP-ENV:Envelope> 09:33:17,644 [mess-id-10] Exit: LogHandler::invoke 09:33:17,645 [mess-id-6] <?xml version="1.0" encoding="UTF-8" ?> <response> <document> <DOC_NAME>doc_name</DOC_NAME> <OPERATION>Operation</OPERATION> <details> <VALUE>Value</VALUE> </details> </document> </response> 09:33:17,645 [mess-id-10] we don't use access rights, so allow this object 09:33:17,645 [mess-id-10] we don't use access rights, so allow this object 09:33:17,645 [mess-id-10] we don't use access rights, so allow this object 09:33:17,645 [mess-id-6] Retrieving info 09:33:17,645 [mess-id-10] XSD validation file location 09:33:17,646 [mess-id-6] Assigning query data 09:33:17,646 [mess-id-6] Assigning query data 09:33:17,647 [mess-id-10] <?xml version="1.0" encoding="UTF-8"?> <ValidityCheck xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"></ValidityCheck> 09:33:17,647 [mess-id-10] XMLReader to be used: org.apache.xerces.parsers.SAXParser 09:33:17,647 [mess-id-10] request validated against XSD in 0 ms 09:33:17,647 [mess-id-6] processing 09:33:17,647 [mess-id-6] prepared XML document 09:33:17,647 [mess-id-6] XML API document 09:33:17,648 [mess-id-10] database connection status=OK 09:33:17,649 [mess-id-10] executing query 09:33:17,650 [mess-id-6] <?xml version="1.0" encoding="UTF-8"?> <CHANGES_REQUEST><document><VERSION/><DOC_NAME>doc_name</DOC_NAME><OPERATION>INSERT</OPERATION><details></details></document></CHANGES_REQUEST> 09:33:17,651 [mess-id-2] <?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body> </soapenv:Body> </soapenv:Envelope> 09:33:17,651 [mess-id-2] Exit: LogHandler::invoke 09:33:17,651 [mess-id-6] preparing a database call 09:33:17,651 [mess-id-6] registering parameter values for the database call 09:33:17,651 [mess-id-6] executing query 09:33:17,659 [mess-id-1] <?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body> </soapenv:Body> </soapenv:Envelope> 09:33:17,659 [mess-id-1] Exit: LogHandler::invoke 09:33:17,683 [mess-id-15] Enter: LogHandler::invoke 09:33:17,683 [mess-id-15] Incoming SOAP request: 09:33:17,687 [mess-id-15] <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body></SOAP-ENV:Body></SOAP-ENV:Envelope> 09:33:17,687 [mess-id-15] Exit: LogHandler::invoke 09:33:17,687 [mess-id-15] we don't use access rights, so allow this object 09:33:17,687 [mess-id-15] we don't use access rights, so allow this object 09:33:17,687 [mess-id-15] we don't use access rights, so allow this object 09:33:17,688 [mess-id-15] XSD validation file location 09:33:17,688 [mess-id-4] SUCCESS in query execution 09:33:17,688 [mess-id-4] response code from 09:33:17,688 [mess-id-4] committing database transaction 09:33:17,689 [mess-id-4] releasing database connection 09:33:17,689 [mess-id-4] outputResponse..start 09:33:17,689 [mess-id-4] outputResponse..end 09:33:17,689 [mess-id-4] Enter: LogHandler::invoke 09:33:17,689 [mess-id-4] Outgoing SOAP response: 09:33:17,689 [mess-id-15] <?xml version="1.0" encoding="UTF-8"?> <ValidityCheck xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><OperationConnectionInfo></OperationConnectionInfo></ValidityCheck> 09:33:17,689 [mess-id-15] XMLReader to be used: org.apache.xerces.parsers.SAXParser 09:33:17,690 [mess-id-15] request validated against XSD in 1 ms 09:33:17,691 [mess-id-15] database connection status 09:33:17,692 [mess-id-4] <?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body> </soapenv:Body> </soapenv:Envelope> 09:33:17,692 [mess-id-4] Exit: LogHandler::invoke 09:33:17,694 [mess-id-15] setting 09:33:17,696 [mess-id-15] executing query 09:33:17,696 [mess-id-15] SUCCESS in query execution 09:33:17,696 [mess-id-15] response code from 09:33:17,696 [mess-id-15] committing database transaction 09:33:17,697 [mess-id-15] releasing database connection 09:33:17,697 [mess-id-15] outputResponse..start 09:33:17,697 [mess-id-15] outputResponse..end 09:33:17,697 [mess-id-15] Enter: LogHandler::invoke 09:33:17,697 [mess-id-15] Outgoing SOAP response: 09:33:17,697 [mess-id-10] SUCCESS in query execution 09:33:17,697 [mess-id-10] response code from 09:33:17,697 [mess-id-10] committing database transaction 09:33:17,698 [mess-id-10] releasing database connection 09:33:17,698 [mess-id-10] outputResponse..start 09:33:17,698 [mess-id-10] outputResponse..end 09:33:17,698 [mess-id-10] Enter: LogHandler::invoke 09:33:17,698 [mess-id-10] Outgoing SOAP response: 09:33:17,700 [mess-id-10] <?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body> </soapenv:Body> </soapenv:Envelope> 09:33:17,700 [mess-id-10] Exit: LogHandler::invoke 09:33:17,700 [mess-id-15] <?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body> </soapenv:Body> </soapenv:Envelope> 09:33:17,700 [mess-id-15] Exit: LogHandler::invoke
>>1629654 С чего будет память? Ты читаешь по строчке и в памяти хранишь только один набор за раз. Собрал полный, обработал и дальше пошел новый собирать. Памяти как раз минимум. Я посмотрю чуть позже.
>>1628311 >>1628301 >>1628302 Так, гуру регулярок, помощь всё ещё требуется. Героическим гуглением я нашёл такое: text = 'ûòåêcnbc okay r45 35 fhstr' cleaned = re.sub(r'(?<!\S)[A-Za-z]+(?!\S)|(?<!\S)[A-Za-z]+(?=:(?!\S))', '', text).strip() cleaned
'ûòåêcnbc r45 35'
но оно делает ровно наоборот - удаляет слова из чистой латиницы, а мне надо их оставить, а всё остальное убрать. Как этот шаблон для такого поправить?
Так блэт, парни, понемногу долблю веб-скрапинг и что-то не вдупляют, как выделить url из вот этой ебени, что получилась: <a class="tm-article-title__link" href="/ru/post/491594/">Новый метод криптографии, обещающий идеальную секретность, встречен со скептицизмом</a> Это элемент, который получился после прохода страницы с помощью BeautifulSoup.findAll, как оттуда вычленить текст url? Если проходиться по элементу итеративно, то он выбрасывает только content (ебучий текст про криптографию). Если еще раз пускать метод find, то не находит нихрена
>>1629728 Ты хуйню нашел. Оно ищет [A-Za-z]+ между пробельными символами. Вот тот метод с коллбэком, что я говорил. https://ideone.com/xeiEIY Ищутся все слова, а потом можно выбрасывать нинужные, в данном случае с цифрами.
>>1629763 Указываешь всё что тебе нужно, и вначале ^ для инвертирования, т.е. [^A-Za-z0-9] выкинет слова, в которых что-то кроме латинских букв и цифр.
Есть кусок вот такого кода. Можно ли точно так же работать с большими csv'шками (сотни тысяч записей и выше) или же в таком случае итерирование через enumerate - плохая практика и исполняться этот скрипт будет полгода? Алсо, неужели нет никаких способов вносить изменения в файловые записи без посредника в виде временного файла? Сейчас, когда мне нужно, например, удалить из csv'шки N-ную строку, я просто перезаписываю в новый файл все строки, кроме N-ной, старый файл удаляю и новому присваиваю имя старого, и что-то я, погуглив, никаких альтернатив не нашёл, хотя выглядит этот метод каким-то совершенно идиотским.
>>1629808 Вернее, у меня даже не столько с точки зрения времени исполнения возникают вопросы (понятно, что с большими объёмами по-другому и не будет), сколько с точки зрения использования памяти. Как тут еnumerate себя показал бы?
>>1629808 Это генератор, он построчно читает по запросу.
Текстовые файлы имеет смысл редактировать построчно, потому что это дает минимальное потребление памяти. В принципе, ты можешь дойти до нужного тебе места, считать остаток в буфер, урезать файл и дописать из буфера. Но нужен буфер, собственно.
Мацанята (мацать, пацаны) привет. У меня нищета вышла погулять (скрины прилагаются), PyCharm прыгает через строки. Есть вариантики отдать вычисления доброму дяде в онлайн ? Можно за подписку, желательно с клиентом наверное, хотя я не знаю что лучше, какой стул выбрать ?
>>1627269 (OP) Двач, подскажи. Есть txt файл, в нем очень много слов. Нужно открыть его, прочитать слова и выбрать парами из них тех, которые являются анаграммами друг к другу. При этом в них 12 символов. В output должно быть два списка. Я сделал через проверку count по циклам, но не проходит по времени. Говорят, нужно юзать словари.
>>1629927 https://ideone.com/CrSkSH Вот так сработает. Но словари со списками в качестве значений выглядят страшненько. Не люблю их. Зато названий меньше.
>>1629934 >>1629964 И я не до конца понимаю алгоритм. Мы читаем файл в список. Затем создаем новый список, в котором слова отсортированы по алфавиту. Потом идет условие: если слова нет в словаре, добавляем его в словарь? Точнее я совсем его не понимаю. Объясни для тупых плз. В какой момент мы ищем слово с таким же набором символов?
>>1629972 with open('test/anagr.txt', 'r') as f: #открываем файл for word in f.read().split(): #берём слово word_letters = ''.join(sorted(word)) #сортируем буквы в слове по алфавиту if word_letters not in letters_sequences: #если такого набора букв нет в словаре letters_sequences[word_letters] = [word] #добавляем набор букв в качестве ключа и список со словом в качестве значения else: #если есть, letters_sequences[word_letters].append(word) #то добавляем в список слов ещё одно слово
>>1627269 (OP) Ладно, ребзики, честно признаюсь - заебался. 215 страничек осилил (на иглише, лул). Сплошная вода. Нудно. Очень нудно. И много воды. И нудно. Чаптер номер_чаптера. В Питоне есть такая-то хуйня-нейм. Бла-бла-бла. Эту хуйню-нейм мы рассмотрим позже. Бла-бла-бла. Прежде, чем читать дальше, запомните, что в Питоне есть такая-то хуйня-нейм, которую мы рассмотрим в следующем чаптере. Чаптер номер_чаптера+1. Как мы узнали из предыдущего чаптера, в Питоне есть хуйня-нейм. Бла-бла-бла. О существовании хуйни-нейм мы узнали из предыдущего чаптера. Бла-бла-бла. Хуйня-нейм - это бла-бла-бла. Более подробно хуйню-нейм мы изучим позже в книге. Quiz: Что есть в Питоне? Answers: В Питоне есть хуйня-нейм. Йибать. В пизду. Дропаю Лутца. Это ладно, полбеды, что за все 215 страничек единственное полезное, что я узнал - то, что в Python можно 2 в 1000000 степени посчитать. Беда в том, что, в тех редких случаях, когда Лутц начинает пояснять за хуйню-нейм - он ее поясняет для версий 2 и 3.3. В итоге, в голове сходу каша.
Серьезно. Не преувеличиваю. Вступление. Ладно. Пес с ним. Краткую (на 20 страничек) историю можно почитать для общего развития. Парт 1. Чаптеры 1, 2 и 3. Блять. 90 страничек размазывает, как командной строкой пользоваться. Вы меня извините, но если человек сел учить программирование - он должен знать, как пользоваться командной строкой и что у файлов, кроме имени есть расширение. Если не знает - пусть пиздует компом учиться пользоваться. Зачем на целых 90 страничек это размазывать? Хз. Парт 2. Чаптер 4. Целых 40 страничек размазывает, о чем будем говорить в следующих чаптерах в этом парте. Чаптер 5. Нумерик тайпс. Какие существуют числовые типы. Две странички воды. Операции, применимые к числовым типам. Две странички перекрестных ссылок. Еще три странички воды. Сравнение версий 2 и 3. Еще вода.
>>1630282 >Читать книги по скриптовым языкам Чего ты ожидал-то? По классике идут 15% копипаста спецификации языка, 5% каких-то хитрых и не очень фишек и 80%+ маняопыта в нескучных проектах и конкретной отсебятины автора Ты еще по жсу книги почитай
>>1630284 По скриптовым я три книги прочитал и они не были такими нудными, хотя там тоже по 1000+ страничек каждый: Колин Мук, "ActionScript 3.0" Котеров, "PHP 5" Флэнаган, "JavaScript, 6-е издание"
У Колина Мука вообще ТОПовая книга. Сходу начинает программу писать и каждую новую фишку в этой программе толково и подробно объясняет. До Колина Мука в ООП не мог въехать. После него сразу въехал. Котеров, фактически, мануал перепечатал. После книги еще мануал перечитал и не заметил разницы. У Флэнаган максимум справочник. Минимум воды. Все по делу. Нудно да, но ни грамма левой бесполезной хуиты.
>>1630288 >Его можно неторопливо почитывать после изучения из других источников и узнавать всякие интересные штуки, которые там не охвачены. Я его читаю после Dive into Python (>>1604158 →). Никаких интересных штук у Лутца за первые 215 не увидел.
>>1627269 (OP) В pip как то можно настроить зеркала? С дефолтных качает пиздец долго. Я пытался гуглить, как это сделать, но по первым ссылкам нихуя не понятно.
>>1630500 > У библиотек ведь нет соединения с интернетом. С чего ты взял? Вот в функции print(), например, только одна строчка занимается выводом на экран, а дальше ещё 200 строк с телеметрией, трекерами и аналитиками.
>>1630501 Я просто думал что один раз поставил через пип библиотеку и на этом всё. Только вручную проверять на наличие обновлений и обновлять при желании.
И еще отсюда вопрос. А в какой момент времени библиотека решает что ей нужно проверить обновления? Как это блин происходит, не пойму.
>>1630505 Норкоман штоле? В верси 0.0.1 пишут warning deprecated grob klabische pidor в верси 0.0.2-0.0.10 оно так и остается, в версии 0.1.1 её просто убирают.
>>1617529 → Понял, что не могу нормально вкатиться в Джаву из-за излишне большого члена. Мой Питон 21х15,5 см не может без смеха смотреть на бедняг-джавистов. Без обид
>>1630565 Пытаюсь вкатится в андроид на котлине после двух лет опыта на пистоне. Идет крайне туго, тяжело воспринимаю объемные куски кода на любых явно типизированных языках. Чувствую себя дауном.
>>1630282 Зря братишка, я сам люблю порой вечерком томик Лутца перед камином полистать. Под бокальчик хорошего вискарика - просто сказка. Дропнул на вступлении епта. С моей концентрацией я его до седых мудей буду читать. По совету анона начал Н. Седера посматривать.
Бляяяяддддь как же горит, мне нужно перевести задание с бэйсика на питон, переписал все один в один, но если бэйсик работает правильно, то питон выдает хуйню
Дано целое число N (N>0). Найти квадрат данного числа, используя для его вычисления формулу N2 = 1 + 3 + 5 + 7 + … + (2N-1)
Код питона при инпуте = 3 выдает 4, бэйсик выдает 9, какого хуя вопрос......
>>1630891 Вообще тебя бы спас банальный print (i) в начале цикла. Не пренебрегай отладочной печатью, искать ошибки просто взглядом на код - удел опытных людей, которые говна поели
Всем привет. Все говорят, чтоб научиться погромировать, нужно код писать, но я хз что писать. Мб есть какие-нибудь сборники задач или типа того? Знаю про кодварс, но там как-то уныло, типа просто задачи не понятно для чего. Или это тоже норм? Я бы вообще хотел ботов для мессенджеров делать или бекэнд, поэтому питон учу. Мне прост не нравится ничего связанное с деланием каких-либо графических интерфейсов, не хочу верстать там и стили подбирать
>>1631402 >Знаю про кодварс, но там как-то уныло, типа просто задачи не понятно для чего Ты научишься программировать только если будешь получать удовольствие от процесса. Примерно как от разгадывания судоку
>>1631431 Ну я вообще не начинаю даже. У меня всю жизнь такая проблема была в общем-то. Когда надо сделать "что-нибудь", то попадаю в полный ступор. За всю школу ни одного сочинения не написал, почти никогда не рисовал на рисовании ничего на "свободную тему". Сейчас вот, когда тян была, она тоже постоянно любила меня просить "рассказать что-нибудь", "подарить что-нибкдь" итд. Пиздец злило нереально. Никогда ничего не делал.
Можно задать значения по умолчанию для всех опций всех команд pip в специальном конфигурационном файле. Свой такой файл может быть определен как для всей системы, так и для отдельных пользователей или даже отдельных виртуальных окружений. https://pip.pypa.io/en/latest/user_guide/#config-file
>>1631956 Ты либо чувствуешь что хочешь и варианты сами приходят в голову, либо рационально выбираешь что делать, без каких либо явных на то ощущений, и учишься любить это дело. А обоих случаях ты так или иначе научишься понимать что тебе больше нравится.
Честно говоря если тебе уже около 20, то я бы посоветовал сходить к психологу, без шуток. Твой ступор в творческой деятельности (ака придумать подарок, историю, написать сочинение) выглядит как комплекс. Почти 100% тебе мешает стресс от какого-то необоснованного ощущения что у тебя ничего не получится или типа того.
Либо можешь сам разбираться с этой проблемой, но уйдет намного больше времени.
Писос, переписывал свой проект Джанги с функций-представлений на классы-представления. Проебао час на дебаг в классе CreateView просто потому что проводил инициализацию в методе get, а не в setup, при повторном вызове инициализация канешн отваливалась, потому что get на этот раз не вызывался
>>1631987 Да, уже давно хочу пойти. Да даже ходил года 2-3 назад. Но я тогда испугался, что не знаю, что говорить и убежал после двух приемов. Собственно мне и до сих пор не очень понятно. Ну вот скажу я ему, что не умею че-то придумывать, а он мне типа "ну и че ты от меня хочешь?". Мне кажется, что тащемта секретов-то тут и нет, просто берешь и придумываешь без задней мысли, какие ещё могут быть варианты? Я сам не могу сформулировать проблему. Но тем не менее, сейчас хочу на вторую говноработу устроиться попробовать ещё раз к мозгоправу пойти, да. Собственно возможно они для того и нужны. Сорян за оффтоп.
>>1632162 Нельзя чтоб юзер зашел с прокси или впн и проебал все данные Поэтому даннве надо сохранять на стороне клиента. Это больше задача для фронтенда, но можно ли в джанге это адекватно запилить?
Сап аноны. СРОЧНО нужна помощь - не могу поставить на своём питоне модули torchwordemb и word2vec. Ставлю с помощью pip install и падает такая ошибка. При чём оба модуля падают в одном и том же месте и даже строчка одна и таже. Питон 3.6. Винда 10. Как это пофиксить? Очень нужно.
Exception: Traceback (most recent call last): File "c:\users\intant\appdata\local\programs\python\python36\lib\site-packages\pip-9.0.1-py3.6.egg\pip\compat\__init__.py", line 73, in console_to_str return s.decode(sys.__stdout__.encoding) UnicodeDecodeError: 'utf-8' codec can't decode byte 0x88 in position 0: invalid start byte
Господи, почему на питоне столько говнокода? Где вообще смотреть примеры хороших решений, если даже самые популярные вещи типа Django и sqlalchemy написаны максимально говенно? Нет, серьезно, как у меня было на PHP - если надо понять, как работает та или иначе вещь на условном Laravel, я просто лезу в исходники, читаю их, и все понятно, даже доку зачастую не надо открывать. Чтение исходников Symfony и Laravel заменяет чтение книг и всяких статей с описанием best practice, это основной способ повышения скилла. А как в питоне? Вот пишу я на sqlalchemy или Django и хочу посмотреть, как метод работает, хочу посмотреть, как надо писать код правильно. Открываю исходники, а там говно, кладбище, пидор, смерть - в одном модуле мешанина из функций, декораторов, глобальных переменных, констант и ещё хуй пойми чего. В сраном PHP даже в провинциальных подвальных веб-студиях за такое жёстко ебут шваброй, даже самый ленивый тимлид такую стену из поноса на пропустит в реп, а в питоне подобное сплошь и рядом. У меня только один вопрос - КАК? Как вы живёте-то блин? Где смотреть хороший продакшн код на питоне?
>>1632577 Ну я и над функцией могу какой-нибудь декоратор захерячить. Из очевидного, чем CBV могут быть прикольные - это если тебе надо вывести кучу однотипных объектов без заебов то ты не пишешь функцию а прям в urls.py хуячишь какой объект моделей выводить как вьюху. Но это ж такое, чисто писанину сокращает.
>>1632667 Не поверю ни разу. Достаточно посмотреть исходники тех же coreutils, чтоы увидеть, что вся читабельность шлется нахуй. Что уж говорить про пхп, где поверху кучи легаси говна навешали недожабу. Это у тебя какая-то деформация.
>>1632669 >Достаточно посмотреть исходники тех же coreutils, чтоы увидеть, что вся читабельность шлется нахуй.
Я об этом и говорю - сорцы питоновских либ и фреймворков невозможно читать.
>Что уж говорить про пхп, где поверху кучи легаси говна навешали недожабу.
Открывай сорцы Ларавель и читай преспокойно - все ясно и понятно, то же самое с Yii2. У Symfony ситуация похуже, так как есть часть легаси, но в целом все равно лучше, чем где-либо в питоне.
Как изменять значение по ключу с помощью цикла? Нужно постепенно увеличивать 0, если соответствующий ключ есть в словаре. d = {'abc': 0,'def': 0,'ghi': 0,'jkl': 0}
Расскажите, пожалуйста. Я делаю поле модели Django, и мне нужно, что бы при обновлении, оно оставляло в себе в кое-какой форме все предыдущие значения поля. Беру сигнал pre_save. Насколько я понял, значение, которое приходит из сериализатора при обновлении, примерно getattr(model_instance, self.get_attname), а значение, которое лежало в поле до этого, в сигнале pre_save можно откопать примерно так - getattr(self.model.object.get(model_instance.id), self.get_attname), только у меня что то нихуя не выходит. Может кто-то чем то таким занимался, может подсказать?
Первая неделя испытательного, уже 2 дня не могу это сделать...
Аноны, я со всей Джанговской ОРМ хуйней уже и забыл, что формат при исполнении запросов - опасная хуйня, как сделать безопасно? Или только использовать старое форматирование строк с помощью %?
Сап питонач. Есть бот на python-telegram-bot, хочу продублировать функционал в вебе. На сколько я понимаю его запросы к бд можно перевести на рест который будет в жанге. Итого будет 2 исполняемых файла сам сервер жанги и бота для телеги? или как это делается у серьезных дяденек?
Ку, ребят, может кто помочь создать бота для телеграма простенького? Нужно что бы автоматически из нужной папки постил файлы в рандомном порядке с некоторым интервалом
import random import os #send_random_picture all_files_in_directory = os.listdir('path') file = random.choice(all_files_in_directory) doc = open('path' + '/' + file, 'rb') #если нужно подпись к фото caption = "любой текст" #send_random_photo bot.send_photo(chat_id, doc, caption)
выглядит вроде как то так, но я не сильно шарю, заранее спасибо.
>>1633084 Проще, конечно. Сначала я так и сделал. Хранил все в одном JSONField, а обновлял с помощью FieldTrackera, только теперь мне надо запихнуть это в границы поля.
Надо бы подучить ванильный js, для более легкого обращения с вебом (в Джанге и Фласке плаваю более-менее), но в соответствующем треде ничего толкового не говорят какие-то они ебанутые в целом Подкиньте сурс, где можно максимально информативно пройтись по жсу без воды и лишнего говна?
>>1627269 (OP) Как привязать ссаную таблицу sqlite к tableView в pyqt? Делаю: model = QtSql.QSqlTableModel() model.setQuery("SELECT * FROM TABLE2") model.setEditStrategy(QtSql.QSqlTableModel.OnManualSubmit) self.ui.tableView1.setModel(model) self.ui.tableView1.show()
TypeError: setQuery(self, QSqlQuery): argument 1 has unexpected type 'str'
>>1633278 Ну вначале напиши код который будет читать файлы из папки(подсказка - listdir), затем функцию которая будет перемешивать уже готовый список из файлов(подсказка - random). Затем бери библиотеку для пистоновского бота для тг и хуярь его по докам.
Требуется разработать скрипт на Python, который должен работать в headless версии браузера. Что должен уметь скрипт: Основное: переходить по ссылкам, последовательно заполнять данные на сайте, нажимать на кнопки и делать это по таймеру. Дополнительно: уметь выполнять одновременно несколько процессов в разных окнах браузера, при этом в каждом использовать разные заране сохраненные данные. Желательно: иметь поддержку прокси.
>>1629077 Я хуй знает, у меня ЕОТова короче в декабре задрочила базовый уровень и в январе заработала 20 косарей на этих ботах, сейчас забила из-за ЕГЭ, я вообще охуел
Народ, как сделать так, чтобы json.dumps писал list в одну строку как на ссылке https://pastebin.com/YsndU3ii, а не по-пидорски каждый элемент с новой ебашил? На стаковерфлове одни костыли трехлетней давности. Мб чета выкатили новое?
>>1634182 А ты много обработки в шаблон и не запихнешь, там не очень много функционала для этого. Раскрасить табличку "если парное - бекграунд белый, если непарное - бекграунд серый", еще какое-нибудь говно "если реквест.урл == инстанс.гет_фулл_юрл" да и все в принципе. Не ну есть способы выебать шаблонную систему джанги в рот, но такие способы это как дурак со стеклянным хуем - вроде и можно дать, да результат заранее понятен. А так вообще хер знает, мне всегда важнее была скорость разработки, чем скорость работы. Откровенно тупящие вещи можно в кеш запихнуть какой.
>>1634210 Ну это все равно не такой пиздец как допустим нахуярить темплейт тег чтобы по рест апи жсон запрашивать где-то выплевывать массивом в шаблон и в шаблоне уже деребанить Да и очевидно что так делать не стоит, того мне кажется такой велосипед городить далеко не каждый додумается, а если и нагородит - то скорее всего решит переделать
>>1634147 Я всегда в таких задачках чувствую себя хуем. Решить-то решаю, но если посмотреть результаты каких-то дрочеров, то мое весьма уныло. Думаю, оно как раз нарабатывается дрочением, так что такой себе скилл.
Есть ли способ в пайчарме просмотреть тело класса целиком в результате наследования? Если не въехали, вот о чем я: мы наследуемся от некого миксина и базового класса (который сука сам наследуется от других базовых классов и миксинов!), как в таком случае посмотреть исходный код со всеми методами и атрибутами получившегося класса? Это банально удобно
>>1634229 Хм, случайно не в курсе, можно ли в Джанго работать с куками и хранить там персональную инфу для каждого отдельного юзера? Или это прерогатива именно фронта?
>>1634401 Ну короткий ответ - можно, и даже нужно. Но сам по себе механизм для данного функциона чутка изощреннее, чем просто куки. Гуглится по "сессии". Хранишь в куках (или еще каким-то нужным тебе способом) идентификатор сессии - а в сессии уже все остальное. Если планируется логин-логаут юзеров + какая-нибудь например корзина - заморачиваешься с тем, чтобы присваивать вошедшему или вышедшему юзеру его предыдущий идентификатор сессии, чтобы ничего не проебалось из корзины. Делается доволно просто, на стаковерфлоу точно есть кучка постов об этом
>>1634464 >ряя аггрегация бьет наследование! наследование нинужно яскозал! Ты хоть понимаешь в какое уг превратится исходный код, если тебе нужно запилить продвинутый и расширяемый функционал? Как в тех же CBV джанги? Наследование тут меньшее зло
Всем привет. Есть ли где-нибудь типа ТЗ или тестовые задания по созданию ботов? Ну или какие-нибудь просто задачи учебные, но только чтобы не рисовать какую-нибудь хуйню в графпай или черепахой. Хоть немного приближенное к реальности то есть, а не просто там нарисуйте N многоугольников друг в друге. Не могу сам себе ничего придумать.
Сап. В общем я ньюфаг в питоне. Написал давече скрипт для работы с API биржи. Хочу завернуть его в GUI оболочку. Но в гугле - всего пара видосов. Посоветуйте плиз литературку по работе с GUI фреймворками питона.
>>1634611 Тащемта, там всё довольно просто и однотипно с эвент лупом во всех тулкитах. Единственное, что надо будет заморочиться, если захочешь сделать четенько без фризов гуя при блокирующих операциях.
вот я сделал какой то полезный скрипт на python. обернул его в docker. на локалке я запускаю его как docker-compose up. Так вот вопрос. где (облако) можно хранить мой скрипт запущенный. что бы я не парился есть ли гайды готовые?
>>1634768 ну я там попытался. так как у меня не просто скрипт. а еще rabbitmq в compose. такое ощущение что он берет ток докер файл. его монтирует. а на остальное болт кладет. =/ Ну и я нихрена не понял там...
Господа, а посоветуйте мне ОДНУ какую-нибудь книгу или видеокурс по питону при следующих вводных. Я умею программировать давно и неплохо, питон у меня не первый и не второй и не пятый язык. То есть мне надо что-то, где можно посмотреть как практически правильно на питоне программить. Без объяснения основ программирования и вот это всё. Что-то типа Ultimate Go от того чувака с кепкой, только для питона.
>>1634804 Рамальо Лучано - Python. К вершинам мастерства - единственное что находил, где тебе не срут в голову элементарными вещами, а рассказывают какие-то тонкости языка и т.д.
>>1634804 Для меня самая пиздатая книга по питону всех времен и народов - Think Python (есть на русском но хз как название ее перевели) Написана не как для дебилов, заданий в конце глав много и они логичные, но захватывают чуть больше чем было в главе чтобы ты хоть чутка покопался в документации. Чем особенно хороша - так это тем что охватывает практически весь ассортимент решаемых на питоне задач. Те прочитав одну книженцию ты будешь плюс-минус понимать куда и как использовать питон с прикладной точки зрения. Из минусов - ненавижу, блядь, черепашек
Я очень жалею что Синк ЖС какого-нибудь есть потому что жс это ебать какое болото для меня
list=[] number = 600851475143 i = 1 while i <= number: if number%i==0: list.append(i) i += 1 print (list[-1]) да что не так......... почему оно не живёт
>>1635000 че сделать то хочешь? совсем что ли больной блять, задачу не описал, код привел без форматирования, цифры блять аппенды, мы это как понимать должны ущербный?
>>1635031 крч, если у тебя есть число N и ты его представляешь как произведение двух целых чисел N=a·b, то этих делителей будет четное (кроме квадратов) число и смотри почему. Вот число 100 100 = 2 · 50 100 = 4 · 25 а потом они местами меняются 100 = 25 · 4 100 = 50 · 2 То есть найти наибольший делитель == найти наименьший делитель И можно список лишних не держать а перебирать с 2 до number-1 пока не встретишь первый делитель (пусть x), и тогда наибольший делитель это number//x прикол: перебирать можно до sqrt(number) а не до number корень можно не вычислять если число не делится на 2, то на любое другое четное можно не делить (см число Эратосфена)
Можно ли заставить приложение на Джанге или Фласке работать на нескольких процессорах? Например помимо обработки запросов от юзеров и посылки им респонсов, у меня будет во втором процессе запущен цикл, отправляющий запросы сторонним ресурсам и сохраняющий информацию из ответов в БД?
>>1635108 ты намешал все в кучу: работать на нескольких процессорах заставить можно, собственно это и делает gunicorn. Руками можно использовать модуль стандартной библиотеки multiprocessing. Если тебе нужен фоновый процесс, то это тоже можно сделать используя плагины django (сам не django не пишу не могу подсказать, но слышал про django background tasks). То что ты написал, лучше решать запустив это как отдельный сервис, то есть у тебя одно питон приложение сервер, одно вот твой ебучий отправлятель сторонним ресурсам, одно бд.
>>1635108 Несколько процессов django запустить не сложно, нужен менеждер задач для этого (гуникорн, супервизор или ещё что-нибудь).
Для того, что хочешь ты, Джанго исходно не очень предназначен, это асинхронные задачи. Хотя делают. Смотреть надо на всякие celery и смежные решения. Вместо фласка можно смотреть на aiohttp.
>>1635154 Это самый большой простой делитель. Если вообще нужен, а не простой, надо чуть модифицировать. Надо найти самый меньший простой, и потом просто число number подедить на него.
>>1635154 если честно ты какую-то хуйню спизданул, вообще не понял что ты в своем коде оптимизировал? ты ищешь самый большой простой делитель? нахуя? int(number0.5) ? зачем? if current_p_max <= 2 and number % 2 == 0: return get_p_max(number//2, 2) что?
Помогите выбрать правильный инструмент для решения задачи. Нужно принимать данные с одного устройства, у которого свой протокол поверх TCP, и складывать их в базу. До этого ни разу не работал с сетью на этом уровне, только с http.
Пока что нагуглил что нужно использовать streams из asyncio, и поднимать свой TCP-сервер, но пока не разобрался как с этим работать.
>>1627269 (OP) Когда шапку в божеский вид приведете? Уже сто лет в обед, а так ничего не поменяли: "Вот вам литература, тут код постите и вот вам протухшие ссылки на Чаво 5тилетней давности - ебитесь как хотите". Может уже пора переписать шапку, чтоб нормально можно было и любому ньюфагу и шарящему можно было вкатиться по нормальному, а не копошиться в протухших ссылках и куче литературы, не понимая с чего начинать?
>>1635422 Код, который выполняется при создании нового объекта. Можно передать ему какие-то параметры или инициализировать какие-то значения в объекте.
>>1635335 Да я, другой анон, не поленюсь и с поправками перекачу, если ещё какой-нибудь анон что-нибудь нормально составит.
Я сто лет не нюфаг и просто в литературе не ориентируюсь. Давно не заглядывал, кроме как в доки, мне тупо сложно посоветовать.
И разных нюфагов много. Одни ни бум-бум в программировали, другие чуть-чуть что-то слышали, ещё кто-то прилично программировал уже и понимает, как языки устроены. Всем своя литература нужна.
>>1635223 Асинхронность нужна тогда, когда тебе надо несколько задач одновременно обслуживать, например слушать несколько сокетов. Тогда или асинхронность в asyncio, или треды, или велосипеды на базе select.
Если только один сокет слушать, то не нужен этот asyncio.
Есть сайт на котором лежат файлы,есть прямые ссылки на них, сайт под Cloudflare. Через браузер они понятное дело открываются, а вот через питон 503 ошибка, есть ли модули для питона чтобы это обойти и как вообще можно это обойти? Пока копаю в ручном получении значения cookie cf_clearance для wget
Аноны, помогите с JSON Собственно, имеется файл, в который я хочу записывать данные в формате {1 : ["a","b","c"], 2 : ["d","e","f"]...} и так далее. Записать у меня получилось, но суть что я хочу этот список переодически обновлять и дополнять, поэтому накодил пикрелейтед (который кстати спокойно работает с форматом без списка), но почему-то в данном случае вылетает ошибка при вызове json.load() >json.decoder.JSONDecodeError: Extra data: line 1 column 312 (char 311) которая указывает на ]} в конце записи. ЧЯДНТ и как это пофиксить?
>>1636577 Сокеты в питоне ну совсем элементарные. import socket sock = socket.socket() sock.bind(("localhost", 1488)) sock.listen(N) client_sock, client_addr = sock.accept() # дальше либо создавать по треду на каждого клиента # либо юзать select.select() # либо ёбнуть asyncio-шный run_in_executor
заметил, што на литкоде шаблоны для задач предлагается писать с использованием typing и стало интересно, это ирл в больших проектах как-то используется? особенно учитывая, что самому пистону в принципе поебать, какие ты там подписал типы в функциях
>>1636787 питон разработчик 5 лет сами аннотации используются довольно активно, т.к. есть линтеры, которые это дело чекают, что позволяет отсекать всякие совсем уж дурные описки Но бывают ребята которые код не пишут, а хуярят, против них тоже помогает Гугли: mypy, flake8
Тупой вопрос не по программированию, а скорее по логике (или даже по математике). В случае некоторой неудачи в коде делаю следующую попытку, перед следующей попыткой делаю ожидание (к примеру 20 секунд), множу время ожидания на попытки 1, 2, 3, 4 и т. д., только с четвёртой, пятой попытки ожидание нарастает уж очень сильно, 8, 40, 200 минут. Может кто подсказать как сделать более плавное нарастающее ожидание между попытками? Со сложениями тоже хуйня какая-то не плавная.
>>1636936 обычно, если не хотят заддосить запросами, то делает что-то вроде того: первые 5-10 запросов повторяют запросы часто (раз в 1 секунду) следующие запросы уже делают редко (раз в 20 минут например) Особого смысла наращивать 1с 10с 20с 30с 40с 50с 60с 2мин 3 мин нет, хоть мб это и красиво выглядит
>>1636940 Как мне это применить? Если делать так - math.sqrt(попытка) * 60 секунд, то выглядит так что идёт просто прибавка 20 секунд, что для меня несколько редко. >>1636942 С чего ты взял что мне что-то дудосить надо?
>>1636947 > если не хотят заддосить запросами > С чего ты взял что мне что-то дудосить надо ? говорю тебе первые десять запросов делай с небольшим перерывом между ними, а все следующие с большим, так будет просто проще, не придумывай математику на ровном месте
>>1636960 >первые 5-10 запросов повторяют запросы часто (раз в 1 секунду) Если бы я занимался дудосами, то я бы так и делал, но я ими не занимаюсь и такая частая хуйня мне не нужна >1с 10с 20с 30с 40с 50с 60с Даже это для меня слишком часто
>>1636972 >> не может объяснить что ему нужно 3 раза уже писал, плавное наращивание времени ожидания, а не наоборот как мне тут говоришь делать ты. >> все вокруг дауны Нет, я только про тебя писал, ни про кого больше, другой >>1636940 мне сразу скинул math.sqrt, правда надо подумать как это применить так как мне надо.
Ничего не пойму, мне нужна программа куда бы я мог вводить разрешение и получать aspect ratio, т.е. как-то считать и приводить разрешение (к примеру 1920x1080) к aspect ratio (16x9 в данном случае). Как такое делать?
Платиновый вопрос, наверное. Но. Зачем нужен декоратор @staticmethod? Stackabuse прочитал, доки прочитал, не понял глубинной сути. Что такого он позволяет делать, чего не позволяет делать любая другая функция?
>>1637549 Чтобы оставаться в составе класса, т.к. имеет к нему отношение. Это обычно какие-то вспомогательные функции вроде математики, эскейпинга и т.д.
Аноны, наверняка вас заебали уже с этим вопросом, но имеет ли смысл проходить курсы, онлайн-курсы, интенсивы по питону для более эфективного/продуктивного обучения или же это сплошное наебалово для лошков, лучше книжки почитать прикрепленные ОПом?
>>1637570 Я засовываю такие функции во внутренний модуль game_utils.py и импортирую по мере надобности. Это плохой стиль по сравнению со staticmethod? >>1637578 >>1637579 Спасибо. То есть функция многих переменных без staticmethod будет в обязательном порядке принимать ещё и self, я правильно понял?
>>1637590 Вызванная у экземпляра - да. А со staticmethod - обязательно нет. В общем, чтобы не ошибиться, всегда вызывай статики только у классов, а не-статики - только у экземпляров.
Привет анончики Допустим, у нас есть массив чисел s = [3, 2, 1, 7, 8, 1, 9, 5, 4] Каким образом можно вывести все числа, находящиеся между единицами? В гугле посмотрел про регулярные выражения, но чет почти ничего не понял(
>>1637765 Ещё один вопрос, ищу элемент comment = soup.findAll('div', {'id': 'comments'}) получаю bs4.element.resultset как потом в нём сделать поиск по ('div', class_='content')?
Анон, выручай неофита! Пишу чатбота для втентакля модуль vk_api, столкнулся с проблемой, что по ночам скрипт падает при простое со следующими ошибками: https://pastebin.com/E3BZDuDa
Раньше бот падал от requests.exceptions.ReadTimeout каждые 10 минут бездействия, я обернул цикл прослушивания в try/except и вроде помогло, а теперь он в один момент по какой-то причине не смог установить соединение, как я понял. Как можно пофиксить?
Как в питоне запилить такую фичу: предположим у нас есть класс PidorBot. Мы его инициализируем, он работает с АПИ какой-то системы. Но описывать методами каждую залупу в АПИ слишком напряжно, а делать это через PidorBot.call("api_name", "args") слишком некрасиво. Можно ли сделать так, что к PidorBot можно присобачивать имя метода, например: PidorBot.call("arg1", "arg2"), а сам класс просто перехватывал имя метода с аргументами и оборачивал в запрос.
Есть какой-то норм туториал по sqlite? Решил немного разобраться в этом говне, а ничего не нашел. Задевают только базовое говно типо insert, delete, select, update, а там же какие-то отношения типа много-к-много, как там зависимость реализовать, вот это вот все.
Traceback (most recent call last): File "pandatest.py", line 2, in <module> import pandapower File "/home/user/.local/lib/python2.7/site-packages/pandapower/__init__.py", line 6, in <module> from pandapower.auxiliary import * File "/home/user/.local/lib/python2.7/site-packages/pandapower/auxiliary.py", line 31, in <module> from collections.abc import MutableMapping ImportError: No module named abc
Надо бота создать, чтобы он мог покупать дешевле продавать подороже. Есть сайт, там итем выкладывается, с указанной скидкой, надо брать итем, если он по скидке 32% или больше. Потом продать его с 20% скидкой. Есть какие-нибудь гайды по этому? Есть базовые знания программирования.
>>1638293 Каких блять зависимостей? Нахера они громадный модуль запихали внутрь другого громадного модуля? Смотрится по-уебски. numpy и так можно вызывать
Антоны, кто-нибудь знаком с pytorch? Можете пояснить, что этот код делает? Я не понимаю, зачем там рандом и как обрабатывается входное значение через pe
Год учил Python своими силами. Выучил на неплохом уровне. Понял что вакансий джунов на Python в городе нет, и поступил на обучение .NET /Basics в EPAM. Я нормален?
Написал обычный простой Кейлоггер используя pynput в учебных целях, интересует каким образом можно стягивать удаленно log.txt себе?
Еще интересует компиляция в .exe, сделал через pypinstaller, локально всё работает, хорошо. Но проблема в том, что у пользователя который будет инсталлировать .exe не будет установлены пакеты Python 3.8. Я так понимаю нужно в ручную писать инсталятор для этого дела, если так, то опять таки в какую сторону мне этот вопрос начать изучать?
И также после инсталяции хочу .exe поместить в автозагрузку. Либа win32api для этого подойдет?
>>1627751 Ошибочки - эт хорошо. Тем более в Питоне - они показывают суть проблемы, ты ещё не видел таких информативных ошибок, как здесь. Да и сообщество на разных сайтах хорошо поясняет их
Сколько проектов нужно залить на ГХ чтобы получить работу на Джанго? У меня есть один относительно законченый проект на Джанго + ДРФ но это по сути просто машап из других АПИ со своим рид-онли АПИ и фронтендом на Вью. Думаю еще захуячить какой-нибудь красивый месседж (имейдж?) боард.
Тред, посвящённый языку программирования Питон, #82
Предыдущий
Литература:
Автоматизация рутинных задач ч.2 - https://anonymousfiles.io/3CBCoy1o/ <-- тут только одна книжка. Кто может, залейте её на ЯД к остальным.
Ещё книжки: https://yadi.sk/d/HQhhsBsq3TVRUq
Тоже книжки: https://yadi.sk/d/tArKKuQu3Kejuq
Больше книжек: https://yadi.sk/d/H-00n-UG3RSQem
Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы:
https://ideone.com/ - возможность постить листинги кода и онлайн-запуска, не требует регистрации
https://dumpz.org/ - можно постить листинги, не требует регистрации
https://pastebin.com/ - для листингов, регистрация не обязательна
https://www.codepile.net/ - можно расшарить код в том числе на редактирование, особая полезная опция - чат при каждом листинге, где можно код обсудить
https://pyfiddle.io/ - запуск python кода онлайн, но чтобы шарить, надо регистрироваться
#######################################
ЧаВо: https://github.com/TheKnightsWhoSayNi/info/wiki/Hat Актуальность примерно 2015 года
Вопросы-ответы:
А стоит ли читать Лутца, том номер N?
Мнения в треде разделены. Кто-то за (очень неплохая база даётся), кто-то против (слишком много воды и объём книг убивает всё рвение). В общем — решать тебе, книга вредна не будет, но ты можешь её просто не дочитать и забросить.
Стоит ли читать %книга_нейм%, если там питон версии 2.х?
Нет, не стоит. 100% есть более актуальная книга, для пистона 3.х
А что ещё можно читать?
Питон сам по себе очень хорошо задокументирован и для уровня начинающих, и для продвинутого. Смотри официальную документацию. Можно начать вот с этого https://docs.python.org/3/tutorial/introduction.html
Есть у кого на примете годный курс лекций по алгоритмам? Формат лекций мне как-то ближе, нежели просто чтение книги.
МФТИшный курс, например, https://www.youtube.com/playlist?list=PLRDzFCPr95fK7tr47883DFUbm4GeOjjc0
Что можно почитать/посмотреть по многопоточности/параллелизации в питоне, да и вообще в целом?
Очень годный ролик на американском языке про многопоточность и асинхронность https://www.youtube.com/watch?v=MCs5OvhV9S4
А как учить джангу? Нахожу только книги по джанге 1.х
У джанги отличные доки (одни из лучших для пистоновских либ, имхо), почитай их для начала. Книгу по джанге можно читать и для версий <2, это не проблема, т.к. принципы остаются теми же. Для переката на 2.х хватит changelog`a или тех же самых доков/статей. Начни изучать с разбора учебного приложения с голосовалкой из официальной документации.
В ньюфаг-треде написано, что нужно начинать с SICP, чтобы научиться программировать
Вот, пожалуйста, та же самая программа, но переработанная под язык Python: http://composingprograms.com/ (нужно знать ангельский или уметь пользоваться переводчиком)
Дайте нормальные книжки на русском! Мы, блядь, не в пиндосии живём
Брат, смотри книжки по ссылкам в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.