Программирование

Ответить в тред Ответить в тред
Check this out!
Питон тред №118 /python/ Аноним 21/04/21 Срд 22:39:02 20039131
5-Most-common-P[...].png 114Кб, 860x480
860x480
GettyImages-158[...].jpg 168Кб, 1390x926
1390x926
pythonchallenge.mp4 14358Кб, 1280x720, 00:01:30
1280x720
Тред, посвящённый языку программирования Питон, #118

Предыдущий: >>1989943 (OP)
Литература:
https://ln2.sync.com/dl/cf2c1d070#xq4s328t-xbbjys2z-9r6j7ss7-gf4e9dv6 <-- Книжки, новое собрание
Ещё книжки: 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/ (нужно знать ангельский или уметь пользоваться переводчиком)

— Можно ли на питоне делать мобильные приложения?
Да, смотри на фреймворк Kivy https://en.wikipedia.org/wiki/Kivy_(framework) https://kivy.readthedocs.io но народ на него жалуется

— Как можно без лишней возни ускорить программу на питоне
1) проверь сначала свой код, алгоритмы и структуры данных. Чаще проблема здесь.
2) код можно иногда феерично ускорить, используя JIT (Just-in-Time) компиляцию. Почитай обязательно про модуль numba, он ставится через pip, и альтернативный интерпретатор PyPy.

— Дайте нормальные книжки на русском! Мы, блядь, не в пиндосии живём
Брат, смотри книжки по ссылкам в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.

ps: анон, если ты вносишь изменения в шапку, оставляй ссылку на код с обновлённым исходником.
Исходник: https://dumpz.org/bASGKD8cCFDf
Аноним 21/04/21 Срд 23:34:57 20039552
Дали задание протестировать Java код на питоне: посмотреть, заполнен ли массив, используется ли цикл и тд.
В голову приходит только взять исходный код на жаве, и добавить в конце assertы на заполненность и все такое, но я не могу же таким образом проверить использования цикла, например.
Для проверки на тест-кейсах есть простейший баш-скрипт, а как именно проверять код, я не могу понять. Мб кто-то сталкивался или шарит, как это можно удобно организовать?
Аноним 22/04/21 Чтв 00:09:24 20039743
Анон, пишу скрипт, который должен работать под виндой и линуксом, и тут у меня операции с директориями. Проблема в том, что в винде слеши обратные, а в линуксе - прямые. Как мне учесть этот момент?
Я не хочу переписывать весь свой код два раза для if os == 'winda': и elif os == 'linux'.
Обрабатывать такие штуки надо в ситуациях типа
with open('templates/folder/file.txt', 'r') as file
Аноним 22/04/21 Чтв 00:15:31 20039764
>>2003974
Пиши везде никсовые слеши, он сам разберется.
Аноним 22/04/21 Чтв 00:16:05 20039775
>>2003974
with open('templates/folder/file.txt'.replace('/', os.sep).replace('\', os.sep), 'r') as file
Должно сработать
Аноним 22/04/21 Чтв 00:17:01 20039786
Привет. Может кто-то адаптировать или показать как это делается в асинронном режиме? Какие плюсы по сравнению с этим трелингом?
for thread in threads:
....thread.start()
for thread in threads:
....thread.join()
Аноним 22/04/21 Чтв 00:18:10 20039797
Аноним 22/04/21 Чтв 00:22:58 20039828
>>2003979
Ну вообще говоря, код на линуксе с его реплейсами у меня заработал, в винду пока лень бутаться. А чому он наркоман?
Аноним 22/04/21 Чтв 07:43:02 20040899
>>2003982
Потому что для этого есть os.path.join
Аноним 22/04/21 Чтв 09:42:55 200410910
Аноним 22/04/21 Чтв 10:30:13 200414811
>>2003813 →
Репостну из предыдущего.
Понял.
А вне Gunicorn'а это приблизительно так же выглядит? Или какие-то другие механизмы?
Аноним 22/04/21 Чтв 10:47:45 200418112
>>2003913 (OP)
ну первая картинка и милота!
кстати, почему цвета питона желто голубые?
Аноним 22/04/21 Чтв 10:49:45 200418613
download.jpg 7Кб, 293x172
293x172
Аноним 22/04/21 Чтв 10:49:49 200418714
>>2004181
Потому что Ван Россум фанат Украины
Аноним 22/04/21 Чтв 11:25:43 200421915
Аноним 22/04/21 Чтв 11:39:03 200422716
В шапке ссылки протухли? Последняя на запуск кода какая-то шняга рекламная.
Посоветуйте онлайн консольку, чтоб в дороге с андроида обучацо, пожалста.
Аноним 22/04/21 Чтв 11:59:46 200424217
>>2004227
http://pythontutor.com/visualize.html#mode=edit
Если зайти на pythontutor.ru, то там базовый курс питона с использованием этого визуализатора
Но нужно понимать, что на телефоне невозможно программировать нормально, это сложнее и в разы дольше, чем на компе
Аноним 22/04/21 Чтв 12:08:35 200424918
Аноним 22/04/21 Чтв 12:24:25 200425919
>>2004242
Спасибо, но сайт какой-то странный, при любом нажатии увеличивает масштаб на 300%, пользоваться невозможно с телефона. Или это из-за оперы.

Не для кодинга конечно, чисто проверить что-то небольшое, в целях обучения.
Аноним 22/04/21 Чтв 12:33:52 200426520
>>2004249
Спасиб, попробую. Но обычно у приложух сильные ограничения функционала, модули там не поддерживаются какие-то, еще что-то. Надеюсь для моих задач хватит. Спасибо.
Аноним 22/04/21 Чтв 12:46:25 200428121
>>2004265
Если хочешь почти как комп, то можно скачать Termux.
Андроид построен на основе линукса, поэтому можно сюда поставить питон и ставить нужные модули туда
Аноним 22/04/21 Чтв 15:20:50 200447822
16190932183561.png 59Кб, 766x482
766x482
16190932183560.png 34Кб, 849x157
849x157
Напишите пожалуйста эту "эквивалентную реализацию через getitem". А то я не могу понять как бы она работала, не смотря на объяснение.
Аноним 22/04/21 Чтв 15:43:52 200450323
image.png 156Кб, 791x569
791x569
image.png 74Кб, 1443x708
1443x708
image.png 776Кб, 1080x917
1080x917
Сап программач. Предлагаю вам посмотреть на самое ебанутое задание. Хохлы хули




Степан любит много смеяться. Смех-это последовательность букв " a " и "h", которые
чередуются. Так например, «ahahaha», «hah» и «a» являются смехом, а «abacaba» и «hh» -
Нет.
Степан разговаривает очень быстро, поэтому все его слова сливаются в одно
большое. Для исследования вам нужно выяснить, как долго он может смеяться. В
вас есть строка-запись разговора Степана. Определите наибольшую длину смеха в этой
разговоре.
Входные данные:
Первая строка входного файла содержит одно натуральное число N (1 ≤ N ≤ 105
) -
длина строки с разговором Степана. Во второй строке содержится строка из
маленьких латинских букв длиной N-запись разговора Степана.
Исходные данные:
В исходный файл выведите одно число-наибольшую длину смеха в разговоре
Степана.



Кто-то вообще понимает, что это за пиздец? Пробовал второй пик, меня послало нахуй.
Аноним 22/04/21 Чтв 15:49:25 200451124
Аноним 22/04/21 Чтв 15:52:33 200451525
>>2004503
Какие же хохлы дегенераты...
Приятнее всего воспользоваться re.findall и взять max len от полученного списка.
Ну или цикл по строке с двумя переменными, где одна переменная это длина текущего хи-хи, а вторая это максимальная длина хи-хи, код писать я разумеется не буду.
Аноним 22/04/21 Чтв 15:55:16 200451826
>>2004515
Да я вроде посчитал эти хихи-хаха через цикл, но был послан нахуй. Может я туплю и здесь нет правильного овтета, ибо я не выкупаю, откуда там берутся такие цифры
Аноним 22/04/21 Чтв 16:05:03 200453427
>>2004518
Ой, чел, там ещё и чередование букв надо учитывать, aaaa и hhhh не считаются смехом. Ну тогда вариант с изящной регуляркой отпадает и остаётся только цикл со сложными условиями. Крепись, чел.
Аноним 22/04/21 Чтв 16:18:40 200455028
ans.png 67Кб, 689x906
689x906
Аноним 22/04/21 Чтв 16:20:38 200455629
.png 23Кб, 942x453
942x453
>> 2004503
В пайтоне это можно за одну строчку решить.
Аноним 22/04/21 Чтв 16:21:50 200455830
Аноним 22/04/21 Чтв 16:24:48 200455931
.png 368Кб, 1488x881
1488x881
>>2004503
Кстати, тут ещё в задании взаимоисключащие вводные.
Аноним 22/04/21 Чтв 16:25:44 200456232
>>2004556
ответ должен быть 5 в твоем примере
Аноним 22/04/21 Чтв 16:27:07 200456433
>>2004559
По-русски не понимаешь? Написано же, чередуются. Поэтому если две одинаковых буквы подряд, то смехуечек обрывается.
Аноним 22/04/21 Чтв 16:28:09 200456834
Ох, заинтриговали меня ваши хохлы, вечером решу.
Аноним 22/04/21 Чтв 16:32:11 200457235
>>2004564
Проблема их формулировки в том, что по ней "аа" можно трактовать как чередование "а" и "а". В этом задании не мешало бы эксплицитно исключить "аа" так, как это было сделано с "hh".
Аноним 22/04/21 Чтв 16:34:32 200457336
haha.png 84Кб, 711x983
711x983
>>2004550
Забыл про кейс с "аа" и "хх".
Аноним 22/04/21 Чтв 16:38:06 200457737
>>2004550
Ты гений просто. От души. Сам бы я эту залупу не смог решить.
Аноним 22/04/21 Чтв 16:46:17 200458938
Эта задачка больше сишников всяких дрочить. Хули нам, питонам.
https://ideone.com/NkHpeo
Аноним 22/04/21 Чтв 16:50:41 200459739
Кстати. Эта задачка из какой-то олимпиады по информатике. 8-11 класс
Аноним 22/04/21 Чтв 16:54:41 200460440
.png 26Кб, 1076x413
1076x413
>>2004577
Ты не забывай про ограничение на время и N до 100k - лупы в пайтоне не самые быстрые. Через регексы наверняка быстрее было бы.
Пикрелейтед, если c исключением "aa"/"hh".
Аноним 22/04/21 Чтв 16:58:10 200461041
>>2004604
Да я думаю пофиг. Просто в универе после того, как сдал большой проект дают мелкую задачку на алгоритм. Проверка довольно формальная
Аноним 22/04/21 Чтв 17:00:51 200461342
>>2004604
Я гарантирую что этот код в несколько раз медленее чем простой луп.
Аноним 22/04/21 Чтв 17:01:54 200461543
>>2004613
Может быть, кому-нибудь не лень и кто-то потестит, было бы интересно.
Аноним 22/04/21 Чтв 17:12:03 200463844
>>2004478

[code]
class SquaresGovna:

def __init__(self, start, stop):
self.data = [value 2 for value in range(start, stop+1)]

def __getitem__(self, i):
return self.data


for i in SquaresGovna(1, 5):
print(i, end=' ')

[/code]
Аноним 22/04/21 Чтв 17:29:04 200465945
.png 158Кб, 1264x1046
1264x1046
>>2004615
Такие дела приблизительно.
Аноним 22/04/21 Чтв 17:37:36 200467446
>>2004659
Код неправильный, но регекс действительно быстрее.
Аноним 22/04/21 Чтв 17:46:10 200468247
>>2004674
Ну, да, кстати, надо было проверить сначала, что возвращают. Оба варианта на длинной стринге некорректно работают.
Аноним 22/04/21 Чтв 18:09:46 200471648
>>2004573
Скинь assert'ы текстом не в крысу, лень перепечатывать.
Аноним 22/04/21 Чтв 19:58:22 200484849
image.png 271Кб, 1920x1080
1920x1080
Сап двощ, начал осваивать Лутца, и там грится, что условный блок кода, который не вложен в оператор if должен хуяриться слева без отступа. Собсна, почему в моем охуенном коде если я въебываю четыре пробела перед блоком кода, который не вложен я про print('block0'), то все заебись работает, а если удаляю отступы, и хуярю его без отступа, то выдает исключение?
Аноним 22/04/21 Чтв 19:59:03 200484950
>>2004848
Слово условный нахуй не нужно бтв не знаю зачем его высрал не обращайте на него внимания плз
быстрофикс
Аноним 22/04/21 Чтв 20:28:42 200487451
image.png 2Кб, 190x159
190x159
>>2004848
Потому что в интерактивном режиме ты вводишь по одной конструкции. В твоем случае верхний if x это начало, и всё остальное вводится уже внутри, так что принт на том же уровне и дает ошибку
В обычном шелле это обозначается ..., у тебя что-то не видно.
Аноним 22/04/21 Чтв 21:29:43 200492352
У меня есть неделя, чтобы написать веб-приложение, которое дёргает из сторонней bi-системы данные, выводит их на странице в виде таблицы, с возможностью фильтрации и редактирования. Пакет, который данные по рест апи дёргает данные уже есть. Как остальное запилить? Нужна ли тут джанга? Имхо нет, т.к. данные не имеет смысла хранить в бд приложения, если всё равно каждый раз их надо тянуть из бд bi. Что тогда использовать, фласк? Как реализовать табличную форму и возможность редактирования (типа как в гугел шытс)?
Аноним 22/04/21 Чтв 21:40:40 200492853
>>2004923
Если следовать твоей логике, то джанга только если есть бд, а если взять фласк, то нельзя использовать бд.
Ни тебе здрасьте, ни до свидания. Нам за тебя тестовое задание сделать, черт?
Аноним 22/04/21 Чтв 21:56:50 200495254
Есть ли плагины, которые выводят подсказки как в pycharm по первой букве? Например, написав 'p' мне сразу подсвечивает print.
Пользуюсь Atom
Аноним 22/04/21 Чтв 22:07:27 200496655
изображение.png 8Кб, 548x101
548x101
>>2004952
Он это делает искаропки
Аноним 22/04/21 Чтв 22:07:47 200496756
>>2004952
VScode попробуй поставить, мне очень зашла после атома.
Там твои подсказки из коробки работать будут.

В Атоме плагинов под питон особо нет, подсказуи рандомизируются.
Аноним 22/04/21 Чтв 22:07:55 200496857
>>2004928
Ну сделайти. Я выбрал джангу, пофиг. Остался вопрос с тем, как запилить интерфейс табличный с фильтрацией и редактированием.
Аноним 22/04/21 Чтв 22:08:12 200496958
Аноним 22/04/21 Чтв 22:49:01 200500559
>>2003974
Ищи os.path.join вроде то что тебе нужно
Аноним 22/04/21 Чтв 23:13:44 200502460
Анон, а как можно отсортировать вот такой список?
['2: string2', '1: string ', '3: string3']
там хранятся строчки, но каждая из них начинается с числа, по которому и нужно сделать сортировку.
Аноним 22/04/21 Чтв 23:14:31 200502661
.png 159Кб, 1105x1036
1105x1036
.png 112Кб, 1191x1032
1191x1032
>>2004659
Интересно - оказалось, пайтоновские лупы уделываются даже вот такой нестед елдой, как на пикрелейтед: две лябмды, re, sorted, filter. При этом по памяти приблизительно одинаково.
Аноним 22/04/21 Чтв 23:21:04 200503062
>>2005024
sorted(my_list, key=lambda x: int(x.split(":")[0]))
Аноним 22/04/21 Чтв 23:23:43 200503363
>>2005030
Хотя, int() можно убрать тут.
Аноним 22/04/21 Чтв 23:35:36 200505064
>>2004604
Почему старт от 1? Эта хуйня разве не пропустит одиночные a h?
Что значат ?!< в начале круглых скобок? В обоих случаях, там разные комбинации.
Аноним 22/04/21 Чтв 23:48:55 200506065
>>2005026
Поиск в ре сишный, он высирает готовые результаты, а фильтры уже только по ним.
Хотя это питонья реализация какая-то унылая.
Скинь-ка это всё текстом, я потыкаю.
Аноним 22/04/21 Чтв 23:50:07 200506166
>>2005030
Охуеть, от души! А как оно работает? Вообще не понимаю.
Аноним 22/04/21 Чтв 23:57:19 200506267
Аноним 23/04/21 Птн 00:07:49 200506868
>>2005050
> Почему старт от 1?
> Что значат ?!<
Можешь здесь это всё почитать: regex101.com
А там регекс забагованный, пришлось вилкой чистить. То решение через лупы тоже забагованное, поэтому этот код не смотри особо.
Аноним 23/04/21 Птн 00:35:40 200507769
Как правильней будет сделать какое-то действие после создании модели в Джанге? По сути я могу описать логику в сериализаторе, овверайднув метод create(), так же могу овверайднуть create во вьюхе, перезаписать save() в модели или создать post_save в сигналах. Всё будет работать одинаково, но что является лучшим вариантом?
Аноним 23/04/21 Птн 00:51:23 200508370
>>2003913 (OP)
Пытаюсь тут обновить одну таблицу в postgres (а точнее поле json), но при попытках обновиться эта падла мне часто ругается на знак "%" - это, якобы это "unsopported format character" - втф? С хера ли % не может быть внутри полей бля?

до кучи добавлю, что я вытаскиваю уже готовое поле где присутствует % (!) но когда обновляю его через sqlalchemy то postgres усирается
Аноним 23/04/21 Птн 00:56:09 200508671
>>2005083
Пробовать избегать этот символ? Мб он считает его частью структуры LIKE %%.
Аноним 23/04/21 Птн 01:03:47 200508872
>>2005083
Попробуй экранизировать его через _%
Аноним 23/04/21 Птн 01:07:45 200509173
>>2005083
Показывай код, хули гадать.
Аноним 23/04/21 Птн 01:23:07 200510174
>>2005091
Что код-то? Ничего он не покажет, дело как и сказали аноны в конченной интерпретации символа % (который уже есть в json, я на это повлиять не могу, нельзя просто "избегать символа %")
Вопрос в том как его верно экранировать? Перед проведением UPDATE проверить всю строку json и напихать туда _ или \ ?
хз
Аноним 23/04/21 Птн 01:28:00 200510275
>>2005101
Банально - парсишь лупом поля жсона и в случае, если там есть %, то заменяешь значение этого value на _%. Не подойдет?
Аноним 23/04/21 Птн 01:28:44 200510376
>>2005101
>Ничего он не покажет
Скорее всего покажет, что ты манипулируешь с базой через три пизды вместо того, чтобы сделать апдейт.
Попробуй заменить все % на chr() от ascii кода %
Аноним 23/04/21 Птн 01:30:54 200510477
image.png 14Кб, 381x177
381x177
Задача про смехуечки. Работает как швейцарские часы. К сожалению, через одну регулярку не осилил, поэтому не так красиво.


import re


def ahaha(txt):
ah = re.findall(r'((ah)\2a?)', txt)
ha = re.findall(r'((ha)\2
h?)', txt)
return max([len(i[0]) for i in ah + ha])
Аноним 23/04/21 Птн 01:32:06 200510578
>>2005101
Покажет где ты обдристался, это какая-то простейший косяк.
Аноним 23/04/21 Птн 01:35:27 200510679
unnamed.jpg 43Кб, 512x355
512x355
Аноним 23/04/21 Птн 01:44:08 200511080
>>2005102
Или json to string -> string.replace() -> string to json
Аноним 23/04/21 Птн 01:54:51 200511681
>>2005105

update_query_start = f'''UPDATE chatvisitor as cv SET json = v.js FROM (VALUES '''
update_query_end = ''') AS v(id, js) WHERE v.id = cv.visitorid'''
to_update_values = [] # some values here
vals_query = ','.join(to_update_values)
whole_query = ''.join([update_query_start, vals_query, update_query_end])

Сильно помогло? Это небольшой кусок непосредственно при добавлении в БД, если закину весь код там будет куча оверхеда, явно ненужного здесь
Вкратце: обновляю базу с 2.5 млн записей, заранее беру все записи через SELECT а потом начинаю делать UPDATE, обработав json-поле нужным образом. Почем вот так вот объединяю строки? Потому что это butch-update, тут разом 100к значений будет, потому что если обновлять их поштучно то можно усраться как долго он это будет делать
Аноним 23/04/21 Птн 01:59:16 200511982
>>2005116
Так если ты руками крафтишь запросы, то и эскейпить значения нужно руками, а как же.
Аноним 23/04/21 Птн 02:01:22 200512083
>>2005119
Можешь прогнать эти значения через prepared statement и глянуть, что он с ними делает. Ну и в целом в либе должны быть функции для обработки, читай доки.
Аноним 23/04/21 Птн 02:04:24 200512284
>>2005105>>2005116
Кстати интересное наблюдение: предварительно пробовал конкурентно гонять скрипт на тестовой базе. При асинхронном варианте через asyncio.gather обосрался на 50% по производительности по сравнению с поштучным синхронным, при мультитрединговом варианте через ThreadPoolExecutor обосрался на 40% (потому что сам постгрес лочит таблицу при таких обновлениях и конкурентно ничего не исполняется)
Аноним 23/04/21 Птн 02:18:43 200512685
Анонасы есть кто в тредике живой? Я жуниор жуниоров и у меня быдлокод не выходит. Пара вопросов есть, был бы очень благодарен если бы кто подсказал(указал) на мои ошибки. Код сюда кидать не буду слишком стыдно за высер
Аноним 23/04/21 Птн 02:20:24 200512886
>>2005126
Почему тебе стыдно на анонимной борде? А как ты на настоящей работе будешь работать?
Аноним 23/04/21 Птн 02:21:28 200512987
16043303746572.jpg 89Кб, 450x600
450x600
Аноним 23/04/21 Птн 02:22:14 200513088
Аноним 23/04/21 Птн 02:25:49 200513189
аргументы.PNG 39Кб, 1072x759
1072x759
Прошу прощения за глупый вопрос, но подскажите, что тут не так?
Вроде всё честно запрогано.
(В устройстве функции разбираться не нужно, гляньте только на передачу аргументов)
Заранее спасибо.
Аноним 23/04/21 Птн 02:27:27 200513290
>>2005131
если что в аргументы передаётся точно словарь, в этом ошибки быть не может
Аноним 23/04/21 Птн 02:46:37 200513491
Безымянный.png 76Кб, 707x925
707x925
Безымянный.png 36Кб, 707x626
707x626
Безымянный.png 80Кб, 1875x841
1875x841
>>2005128
Стыдно потому что эта двач нахуй. /pr/ один из самых токсичных бордов здесь. Даже /po/ и /re/ менее токсичный. Тут сразу "ооо ряяя вкатыш, ты ненужный член общества хуе-мое да. иди за уроки ряяя". Дефолтный ответ на просьбу о совете print('Пошел нахуй')
Сразу все желание пропадает сидеть тут.
Конечно, если люди-исключения. Пару раз общался с адекватными здесь, которые подсказали и помогли. Однако в основном реакция как выше.
>>2005129
Это да
>>2005130
Спасибо. Я работаю сейчас в корпорации, продаем говно скажем. Я еком специалист и мне часто приходит задача: Переименуй фото на каждое SKU так то так то. Это делается чтобы на маркетплейсы их выложить. Так вот, хочу это автоматизировать а заодно прокачаться в программировании. Сейчас я на стадии: есть одна папка в ней лежит 100 папок в каждой из 100 папок лежит еще 5-10 папок и уже в каждой из этих папок лежат фотки которые я буду соответственно переименовывать. Следовательно мне надо избавится от ненужного звена, а именно удалить вот эти папки (пикрил 1). То что я написал уже ошибка и я не понимаю почему он не показывает мне лист вложимости подпапок(пикрил 2 и 3) Очень буду благодарен если подскажите!
Аноним 23/04/21 Птн 02:51:34 200513592
Аноним 23/04/21 Птн 02:52:12 200513693
image.png 124Кб, 1862x807
1862x807
>>2005134
Я понимаю что буду копировать фотки в лист, потом выносить этот лист в основную папку, а папки вложения буду удалять, но питон не хочет видеть что у меня в подпапках, собака такая. В консоли видно что он мне перебирает и не видит вложимость, но если я вызываю функции вручную и по одной то он мне все это делает.
Аноним 23/04/21 Птн 02:53:18 200513794
>>2005135
Загнулся он уже, маленькая относительная посещаемость. Моя команда больше концентрируется на вб и озоне сейчас
Аноним 23/04/21 Птн 02:57:48 200513995
>>2005134
Это рекурсивная задача и решается она рекурсивно, а не твоей хуйней. Но ещё это частая задача, поэтому она уже реализована в стандартной библиотеке - смотри os.walk
Аноним 23/04/21 Птн 03:20:51 200514696
>>2005139
Реально, СПАСИБО
Сори за тупые вопросы. Я очень много чего еще не знаю
Аноним 23/04/21 Птн 03:27:48 200514897
>>2005139
Бля, я похоже совсем тупой. Как тогда мне из этого картежа вытянуть все фотки то?
Аноним 23/04/21 Птн 03:41:32 200514998
Аноним 23/04/21 Птн 03:56:53 200515099
>>2005149
Спасибо огромное
От всей души спасибо, я уже сгореть хотел
Анон 23/04/21 Птн 05:31:33 2005168100
Тема!
Аноним 23/04/21 Птн 07:46:17 2005199101
>>2004109
>Ты сначала задачу свою опиши
Нужно сделать 30 отдельных реквестов и чтобы это не занимало 10-15 секунд нужно чтобы было быстро. Это для dashbord поэтому больше 5 секунд будет уже плохо.
Аноним 23/04/21 Птн 08:51:03 2005217102
Братцы, помогите с логикой.
Есть API, который я опрашиваю в бесконечном цикле раз в час, передавая случайное число от 0 до N.
N может изменяться и я хочу его чекать раз в 2 недели и, если он изменится, менять.
Как это реализовать в Python? Где хранить старое N? Как в запущенном процессе проверять N?
Аноним 23/04/21 Птн 11:10:32 2005323103
>>2005077
Разница в области действия твоего кода же, если ты во вьюхе сделаешь, то в другой вьюхе save останется прежним, если в сериализаторе, то только при использовании этого сериализатора, если в модели - во всех случаях. Вот и решай когда тебе это надо.
>>2005104
Со строкой 'a' сработает?
>>2005199
Вот тебе пример с покемонами: https://www.twilio.com/blog/asynchronous-http-requests-in-python-with-aiohttp
Если тебе нужны результаты всех 30 запросов вместе, то используй await asyncio.gather(), он подождет пока все запросы исполнятся и выдаст тебе результаты пачкой. Если надо отдать на клиента результат отдельного запроса не дожидаясь остальных, то создавай задачи отдельно с помощью asyncio.create_task()
Аноним 23/04/21 Птн 11:54:25 2005389104
Какова вероятность, что в ближайшие лет 5-7 Django перестанет быть актуальным? Тут ведь, как грибы после дождя, вылезают компактные асинхронные фреймворки, позволяющие практически из коробки получать более-менее нагружаемые сервисы, так, спрашивается, каким останется юзкейс для Django?
Аноним 23/04/21 Птн 11:56:54 2005391105
>>2005389
Что тебе помешает перекатиться с джанги на другой популярный фреймворк? Это же не другая технология, и даже не другой ЯП. Просто либа к нему, для менеджмента реквестов и респонсов.
Аноним 23/04/21 Птн 12:07:19 2005415106
>>2005391
Ничего, просто интересно, что прогнозируете.
Аноним 23/04/21 Птн 12:13:03 2005434107
>>2005415
Думаю Джанга сможет адаптироваться под современные реалии, за счёт большого опен-сорс копьюнити. Та же поддержка асинхронности и ASGI тому пример.
Аноним 23/04/21 Птн 12:26:15 2005451108
Здарова питонисты, я к вам пришел из другого, более элитного треда и у меня к вам очень важный и каверзный вопрос

А не расскажите ли вы мне часом, почему в питоне нет нормальной функции вывода???

Ваш пидорский print() на самом деле является println(), он тупо ставит \n в конце любой строки. В любом другом нормальном языке есть функция вывода в строку, без переноса
Аноним 23/04/21 Птн 12:30:47 2005459109
>>2005451
sys.stdout

и гугли мануал print-а, все там есть и вывод форматируется как тебе надо
Аноним 23/04/21 Птн 12:30:54 2005460110
>>2005451
>я к вам пришел из другого, более элитного треда
Откуда тебя погнали ссаными тряпками?

Есть специальный аргумент end="\n", можешь каким угодно конец строки делать, по-умолчанию "\n".

Тебе не место среди пайтон господ, уходи отсюда.
Аноним 23/04/21 Птн 12:36:35 2005477111
>>2005459
>>2005460
Почему в таком крутом и прогрессивном языке мне надо изьёбываться чтобы просто вывести в строку?

Почему создатели питона просто не сделали 2 функции print и println???
Аноним 23/04/21 Птн 12:40:08 2005492112
>>2005477
А еще функцию чтобы выводить через табуляцию, а еще функцию чтобы через строку, а еще функцию чтобы разделитель был не пробел а таб
Аноним 23/04/21 Птн 12:46:47 2005504113
>>2005477
Если это для тебя самая важная функция языка, то стоить поискать другой, тут плохо зделано тупо.
Аноним 23/04/21 Птн 12:59:26 2005515114
>>2005477
Да вообще долбоебы
Надо было не 2 сделать а 4: одна выводит в строку, другая через строку, третья через запятую а четвертая меняет регистр при выводе
Вот тогда было б заебись
Аноним 23/04/21 Птн 13:00:14 2005518115
>>2005504
>>2005477
Решается всё в одну строчку (плюс ещё одну на импорт)
println = functools.partial(print, end="")

Кста, анон, попробуй так в своих явах.
Аноним 23/04/21 Птн 13:11:45 2005534116
>>2005518
Что на явах? На благородной джаве все просто

System.out.print() для вывода в строку
System.out.println() ставит \н после вывода

Также в джаве ты можешь ставить \n прямо в сообщении и будет все выводиться как тебе надо

Например "ху\nй" выведет:
ху
й

Аноним 23/04/21 Птн 13:14:35 2005541117
image.png 3Кб, 238x120
238x120
Аноним 23/04/21 Птн 13:14:49 2005543118
image.png 31Кб, 900x99
900x99
>>2005534
Пиздец ты клован...
в прочем что еще можно ожидать от человека не осилившего мануал для базой функции print
Аноним 23/04/21 Птн 13:21:04 2005554119
>>2005541
>>2005543
Нахуй вы это высрали то?

Вы как раз таки и указали на проблему питона. Там по стандарту стоит енд="/n" хотя по стандарту не должно ничего стоять
А если хочешь вывести на новую строку то как раз таки и использовать этот доп аргумент

А пример на джеве я сделал потому что там анон сам это попросил
>Кста, анон, попробуй так в своих явах

Аноним 23/04/21 Птн 13:22:47 2005557120
>>2005554
>А пример на джеве я сделал потому что там анон сам это попросил
Анон тебя просил сделать partial применение
Аноним 23/04/21 Птн 13:23:30 2005559121
>>2005554
Зелёный, принт обычно используют для дебагга каких-то переменных для себя. Мне проще написать print(a), и увидеть в терминале вывод в отдельной строке, чем каждый раз писать print(a, end="\n").
Аноним 23/04/21 Птн 13:24:25 2005561122
>>2005554
Нихуя, стандарт на принты уже выпустили. Ну неси ссылку, почитаем.
Аноним 23/04/21 Птн 13:25:46 2005562123
Аноним 23/04/21 Птн 13:27:34 2005565124
>>2005559
Называешь меня зеленым и при этом дебажишь принтом?
Нихуя себе

Подойди к синьору, спроси как они дебажат
Аноним 23/04/21 Птн 13:31:56 2005571125
>>2005562
И почему же в си нет ни print, ни println, как так получилось?
Аноним 23/04/21 Птн 13:41:19 2005582126
>>2005565
> и при этом дебажишь принтом?
Что не так с дебагом принтом?
Аноним 23/04/21 Птн 14:19:01 2005622127
>>2005582
Это не профессионально
Аноним 23/04/21 Птн 14:24:34 2005625128
Генератор ведь является итератором?
Аноним 23/04/21 Птн 14:26:51 2005629129
>>2005554
>Вы как раз таки и указали на проблему питона.
Какая ещё проблема питона? Как раз в большинстве случаев нужно, чтобы print переводил строку, чтобы не писать "\n" каждый раз. Это реально очень неудобно каждый раз писать руками, как в C/PHP, например.

Если тебе нужно печатать на экран без перевода строки, то скорее всего ты что-то делаешь не так, что дурной стиль и чревато проблемами. При этом у тебя есть такая возможность, указав end="". Но я не помню, когда последний раз так делал.

В норме ты должен сначала сформировать строку, а потом уже делать её вывод.
Аноним 23/04/21 Птн 14:37:47 2005640130
>>2005625
Он реализует протокол итератора.
Аноним 23/04/21 Птн 14:46:35 2005647131
>>2005622
Тоже не по стандарту? Лучше же включать дебаггер и перезапускать весь проект, чем законсолить нужный объект в классе и глянуть че в него упало. Зато по какону и профессионально
Аноним 23/04/21 Птн 14:55:27 2005662132
Кто-нибудь писал/тестил Rust'овские модули для пайтона в продакшене? Хочу попробовать в одной приложухе переписать основную логику на Rust'е через вот это вот - https://github.com/dgrunwald/rust-cpython . Интересено, какие подводные.
Аноним 23/04/21 Птн 14:55:56 2005663133
>>2005640
Разве у него у самого нет метода next?
Аноним 23/04/21 Птн 15:04:20 2005675134
>>2005663
Я же говорю, что он реализует протокол, т.е. iter и next, поэтому его можно использовать там же, где и итераторы. Но не только.
Аноним 23/04/21 Птн 18:20:42 2006017135
Как с помощью sqlalchemy.engine сделать бэкап бд mysql? Тупо данные выгружать в каком-то формате или как это делается вообще?
Аноним 23/04/21 Птн 18:52:12 2006062136
Salut, подскажите книги best practices по питоночьюму написанию кода, 50 рецептов читал, мало полезного.
Аноним 23/04/21 Птн 19:38:15 2006131137
>>2005323
>Со строкой 'a' сработает?
Нет, а разве это является смехуечком по условию?
БТВ моя хуйня еще валится если смехуечков не найдено, так что надо было добавить в начале return 0, если в строке не найдено смехуечков ah ha.
Аноним 23/04/21 Птн 22:08:58 2006225138
>>2005323
Ок, спасибо. А можно ли как-то сделать headers глобальными в confteste например?
Аноним 24/04/21 Суб 02:29:45 2006400139
Как мне вставлять списки в клеточки таблички pandas? То есть чтобы заработало df['column_name'][0]=[1, 2, 3]. Я для начала создал этот столбец и заполнил нанами df['column_name']=np.nan А вот при попытке вместо нанов писать списки мне ругается setting an array element with a sequence.
При этом знаю точно, что списки туда запихнуть можно.
Аноним 24/04/21 Суб 03:34:55 2006419140
Как же заебало программирование. Каждый раз что-то ломается у кого то. Пздц. Куда потом люди перекатываются?
Аноним 24/04/21 Суб 04:16:23 2006430141
>>2006400
Сам сделал, но костыльно. Пришлось делать список из этих списков, чтоб длина соответствовала длине датафрейма. И уже это список списков пихать как целую колонку.
Что-то типа
list=[[1,2,3], [2,3], [1,2]]
df['column_name']=list
Аноним 24/04/21 Суб 04:44:11 2006431142
ahegao-sweatshi[...].jpg 124Кб, 807x985
807x985
Бля, анон, просто хотел поделиться гордостью.

По работе написал программу, которая залезает на хост БД, с помощью Pyinquirer и выбирает нужную базу данных и опять же по выбору лезет в нужную таблицу, забирает оттуда данные, форматирует их в нужный вид и подставляет в текстовый файл с кучей предыдущей инфы из этих таблиц. Попутно ещё разучил регулярки в SQL. Короче по сути вышел такой дифф.
Скрипт получился большой, на 2500 строчек. Буду думать, как оптимизировать, а так прям пиздец охуенно, срезал этой штукой часа два работы каждую неделю и постоянные обосрамсы на продакшене.
Ещё буду прикручивать версионирование через гит, чтобы обновлять эту программу.
Аноним 24/04/21 Суб 04:55:40 2006432143
Аноним 24/04/21 Суб 11:15:39 2006529144
Умоляю, помогите.

Есть 1 код через который пытаюсь приконектиться к БД, но все время выдает ошибку, что класс com.ibm.as400.access.AS400JDBCDriver не найден. Очень больно, тыщу страниц в гугле прошел, но ничего не находится.

import jaydebeapi

connect = jaydebeapi.connect(
'com.ibm.as400.access.AS400JDBCDriver',
'jdbc:as400://url;',['login','pass'],
'Driver/jt400.jar')

Я скоро повешусь от этой проблемы.

Пытался также через ibm_db

ibm_db.connect(
"DATABASE=name;"
"HOSTNAME=name;"
"PORT=;"
"PROTOCOL=TCPIP;"
"UID=name;"
"PWD=pass;",
"", "")

Все без результатов. Умоляю, двач, помоги. Вовек не забуду.
Аноним 24/04/21 Суб 11:24:58 2006539145
>>2004923
Анон, ты сделал? Мне было бы тоже интересно как решается такая задача
Аноним 24/04/21 Суб 11:39:10 2006551146
>>2006419
Сходное где навыки системного мышления пригодятся, но без мозгоёбства мелочными багами - инженеры, математика, музыка, архитектура.
Аноним 24/04/21 Суб 13:04:29 2006641147
>>2006225
Не совсем понял тебя, передаешь хедеры при создании сессии и все, они будут отправляться с каждым запросом: aiohttp.ClientSession(headers=headers)
>>2004923
Втупую пересылаешь все на клиента, а на клиенте используешь одну из миллиона DataTable.js
Аноним 24/04/21 Суб 13:05:42 2006647148
>>2006529
Серьезно, чел? Ты прописываешь драйвер для подключения, драйвер не найден. Получается, что нужно нагуглить, как установить этот драйвер или какой правильный драйвер туда прописывать. Разве нет? Сколько IQ? Какая зарплата?
Аноним 24/04/21 Суб 13:19:38 2006696149
>>2006647
>Сколько IQ? Какая зарплата?

А что важнее?
Аноним 24/04/21 Суб 13:29:15 2006720150
>>2006696
Первое, IQ нормально уровень сообразительности показывает, ну а зарплата уже чисто справочная инфа.
Аноним 24/04/21 Суб 14:03:48 2006778151
>>2006431
2к строк это прям очень много, я недавно целый проект написал за месяц примерно на 4к строк, полностью рабочий, а тут одна функция, уверен что все нормально сделал или накостылял так сильно? Или может это нормально, на питоне просто редко вижу такие файлы огромные
Аноним 24/04/21 Суб 14:37:30 2006823152
изображение.png 400Кб, 615x345
615x345
как мне через argparse совместить позиционные аргументы и необязательные типо
app 1
app 2 value1 value2 value3
Аноним 24/04/21 Суб 15:33:15 2006890153
>>2006720
Вера в iq ничем не отличает от веры в гороскоп и гадания.
Ты типичная тупенькая внушаемая пидораха.
Аноним 24/04/21 Суб 15:50:04 2006936154
Аноним 24/04/21 Суб 15:54:52 2006944155
image.png 1446Кб, 1400x859
1400x859
>>2006890
Скажем так: если твой IQ 70 ты это однозначно пруфает что ты дурачок (если конечно ты зачем-то специально не завалил тест или не писал его будучи больным/бухим); а есди твой IQ 130 то это не пруфает вообще ничего

Маньки очень любят выпячивать свой маня-IQ, просто потому что это одна из очень немногих сфер где они хоть чего-то достигли
Аноним 24/04/21 Суб 17:42:53 2007105156
>>2006936
Интересно но слишком растянуто, эт надо было с класса пятого. А если быстро, если надо уже работать. Не, оч долго. И нудно.
Аноним 24/04/21 Суб 18:45:22 2007226157
>>2006936
Дать видосам информативные названия автор не догадался.
Аноним 24/04/21 Суб 18:55:44 2007247158
>>2006890
А ты типичная тупенькая антиинтеллектуальная пидораха.
IQ - это, буквально, уровень сообразительности, осознанности, способности грамотно принимать решения и следовать дисциплине. Американцы во время вьетнамской войны понабрали лоу-IQ дебилов из низших слоёв населения в армию однажды, потому что high-IQ население не хотело воевать - результаты были о ху еть.
>A man assigned to t-shirt printing shop was unable to understand alphabetization and had to pick out each letter for printing by scanning through the box one by one; a sergeant trained two men to drive military trucks somewhat successfully but they were too dangerous drivers to be used and were transferred out; another simply forgot to get back on the helicopters after a village search forcing a second retrieval mission; another was lucky enough to be sheltered by his sergeant in mess hall duties (until a mortar hit it, killing him); one played a prank on his squad mates, tossing a defused grenade at them two times, but on the third throw forgot to disable it; another wandered away from an ambush and wandering back, was killed by his squad; while yet another almost shot his commander with a LAW rocket when startled; another did kill his commander while on guard duty when he forgot to ask for the password before shooting; another forgot to put his rifle safety on (shooting a squad mate in the foot, who died); another tripped a booby-trap while not paying attention; another was captured by the NVA and went insane, screaming endlessly and defecating on himself while being beaten… It is unsurprising that many of them would be made to ‘walk point’, or ejected somehow, in addition to the constant insults and abuse—a new recruit was told the NVA would kill them all in a few hours, went insane from fear, climbed up a flag pole, and jumped off it; and another was beaten to death in Marine basic training.
Это ревью книги, полностью здесь https://www.gwern.net/Book-reviews#mcnamaras-folly-gregory-2015
IQ это просто биологический факт, на который влияет окружение во время взросления, наследственность от родителей, уровень дохода семьи, образованность, etc.
>>2006944
>есди твой IQ 130 то это не пруфает вообще ничего
Пруфает как минимум способность кодить. А на самом деле, пруфает вообще всё.
Аноним 24/04/21 Суб 19:02:22 2007261159
>>2007247
>Пруфает как минимум способность кодить.
Тащемта, коденгу на питоне научить можно любую мартышку, причём мартышку, не осилившую даже жс/пхп, о каком там айсикью ты размечтался, маня?
Аноним 24/04/21 Суб 19:38:39 2007302160
>>2006641
>Втупую пересылаешь все на клиента, а на клиенте используешь одну из миллиона DataTable.js
Если готов помочь в личку, готов заплатить, если проконсультируешь, как это делать.
Аноним 24/04/21 Суб 19:50:14 2007314161
>>2007261
По-моему си намного проще чем питон. В питоне всякие компрехеншены, функциональщина.
Аноним 24/04/21 Суб 20:05:42 2007324162
>>2007314
Это разные проще, которые многие путают.
Си проще, но на нем сложнее решать сложные задачи.
Питон сложнее, но на нем проще решать сложные задачи.
Аноним 24/04/21 Суб 20:08:22 2007327163
Посидел на codewars, поделал задания. Понял, что процесс обучения остановился. Куча времени уходит на тонны говнокода, чтобы в результате увидеть, как народ решает тоже самое в 2 строки с неизвестными мне функциями.
Я конечно лучше стал обращаться со старыми знаниями, но новые от заданий приходят очень мало. Лучше пойду книжки читать.
Аноним 24/04/21 Суб 20:12:07 2007331164
>>2007327
Там процветает писькомерство на тему краткости, но пользы от этого немного. Я просматриваю все популярные варианты и иногда бывает малаца, хорошо зделали, но не очень часто.
Аноним 24/04/21 Суб 21:52:54 2007433165
Как без шуму и пылу найти разницу между двумя байтстрингами от requests.get().content? Может, какие библиотеки есть, вроде difflib?
Аноним 24/04/21 Суб 21:59:50 2007442166
>>2007433
А, внезапно, там есть diff_bytes.
Аноним 24/04/21 Суб 23:37:38 2007565167
>>2006641
>Не совсем понял тебя, передаешь хедеры при создании сессии и все, они будут отправляться с каждым запросом: aiohttp.ClientSession(headers=headers)
Допустим у меня есть ещё и другие реквесты. Чтобы постоянно в юнит тесте не писать хедерс=хедерс может их можно как-то сделать глобальными и доступными сразу при запуске любого теста для которого нужны хедерс.
Аноним 25/04/21 Вск 00:20:25 2007607168
>>2007331
У этих долбоебов вообще порой фетиш сделать как можно больше в 1 строку, даже когда это говно абсолютно нечитаемо
За такой код на проде будешь точно выебан
Аноним 25/04/21 Вск 00:29:34 2007611169
>>2007261
>Тащемта, коденгу на питоне научить можно любую мартышку
Увы, нет вот совсем. Проблема в том, что мартышки не любят и не умеют думать, вот совсем. Без этого кодинг не работает, потому что в кодинге необходимо думать над тем, что делает твой код.

Питону проще обучить неусидчивых, потому что меньше надо ботать всякой инженерной хрени, чтобы получить рабочий код.
Аноним 25/04/21 Вск 00:32:01 2007612170
>>2007611
>не любят и не умеют думать, вот совсем
Бля, поди подмойся, маня
Ты больно дохуя на себя берешь
На работе встречаю таких затупков что пиздец. Ахуеваю, как они вообще мышки взять в руки могут. Но тем не менее кодят и зарабатывают бабки

Умерь свое эго
Аноним 25/04/21 Вск 03:22:05 2007750171
>>2006432
Знаешь, как на гитхабе подсвечиваются красным и зеленым изменения в файлах? Вот эту хуйню я называю дифф. У меня нечто похожее, только программа не отображает дифф, а записывает его в файл.
>>2006778
Там нужно лезть в 40 разных таблиц с забористым SQL с регулярками и очень по-разному форматировать каждый полученный массив данных. Но да, если бы пришел профессиональный питонист, он бы эту хуйню раза в два точно смог сократить, я-то и не программист даже. Просто манагер, решивший автоматизировать работку.
Аноним 25/04/21 Вск 13:06:06 2007945172
начинаю вкатываться, пока ничего не получается.. Как вызвать метод из другого класса?

def parseFile(filename):
.....
class myplugin_t(qwe):
def run(self, arg):
matches = parseFile(filename)
....

ошибка: NameError: global name 'filename' is not defined
как определить 'filename'? нужно на Python 2.7.
Аноним 25/04/21 Вск 13:40:57 2007959173
Как в lxml собирать через xpath содержание только тех div'оф, у которых отсутствует определённый div-потомок?
По отдельности этих потомков я могу находить через такую штуку - doc.xpath("//div[contains(concat(' ',normalize-space(@class),' '),'class_name)]"). Проблема в том, что так невозможно отследить наследственные связи.
Аноним 25/04/21 Вск 14:07:12 2007973174
>>2007945
уже не актуально, ползу дальше)
Аноним 25/04/21 Вск 15:10:02 2008014175
>>2007945
ругается на строку:
regs = re.findall(regs_pattern, match['last_line'])
ошибкой: "tuple indices must be integer, not str"
regs=() - не помогает. Что нужно, чтобы tuple стал integer?
Аноним 25/04/21 Вск 16:06:28 2008077176
>>2008014
Не tuple должен стать integer, а индекс для tuple.

У тебя, видимо, match - список (а не словарь), а ты ему в качестве индекса подаешь строку 'last_line'. Если нужен последний элемент списка, то делай match[-1]. Если last_line - целочисленная переменная, то делай match[last_line], без кавычек.
Аноним 25/04/21 Вск 16:11:08 2008084177
>>2007327
Это нормально. Продолжай чередовать практическое решение задач с изучением стандарной библиотеки и типичных приемов, и будет прогресс.
Аноним 25/04/21 Вск 16:14:19 2008090178
>>2008077
Вернее даже, у тебя match - не список (list), а кортеж (tuple).
Аноним 25/04/21 Вск 16:30:07 2008126179
>>2006400
df['column_name'] = df['column_name'].astype('object')
df.at[0, 'column_name'] = [1, 2, 3]
Аноним 25/04/21 Вск 17:26:20 2008189180
Screenshot1.png 39Кб, 819x543
819x543
Аноним 25/04/21 Вск 18:38:11 2008263181
Нужно чтобы один скриптик запускался один раз в день, что для этого нужно? Я так понимаю нужно поставить его крутится на сервере в вечном лупе, или это делается на уровне ОС сервера. Я вообще ньюфаг в этом
Аноним 25/04/21 Вск 19:05:26 2008304182
>>2008189
В строке 29 надо for match in ret.

match в строке 23 это действительно tuple, который потом там распаковывается и пакуется обратно в словарь. match в строке 32 это уже такой словарь и есть. Так что, match['last_line'] - обращение по ключу к такому словарю.

Странный код, честно говоря. Кто-то надергал и склеил куски из чего-то вроде https://github.com/rmadair/windbg2ida/blob/master/windbg2ida.py
Аноним 25/04/21 Вск 19:15:00 2008316183
Нубвопрос, но все же, не могу нагуглить, как создавать "перекрестные" словари.
Допустим, нужно создать колоду карт из двух листов - в одном ранг, в другом - масть:
value = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"]
suit = ["Hearts", "Diamonds", "Clubs", "Spades"]

Так вот вопрос: как максимально простым и лаконичным образом создать словарь, где каждому значению из листа value будет перекрестно присвоено каждое значение листа suit?
Например:
{'A': 'Hearts',
'A': 'Diamonds',
'A': 'Clubs',
'A': 'Spades',
'2'': 'Hearts ... и т.д. 52 раза}

Пробовал через dict.fromkeys(value, suit), но этот метод не распаковывает лист suit, а выдает:
A ['Hearts', 'Diamonds', 'Clubs', 'Spades']
2 ['Hearts', 'Diamonds', 'Clubs', 'Spades']
Аноним 25/04/21 Вск 19:19:25 2008320184
>>2008316
import itertools
dict(itertools.product(value,suit))
Аноним 25/04/21 Вск 19:22:45 2008327185
readmepicafter.png 55Кб, 678x790
678x790
>>2008304
спасибо, ошибка пропала, но не работает как должно - трасса в ИДА не подсвечивается)
Это тот (вернее, похожий - у меня есть более древняя версия, которая уже недоступна) код с гитхаба и есть (тот тоже не работает - не та версия IDA или python. На разных версиях заставить работать не удалось), просто все методы засунул в класс регистрации плагина.

что делает: с помощью windbg снимается трасса выполнения с исполняемого файла и затем в ИДА подсвечивается ход исполнения. Должно в итоге быть так: см. рисунок.
Состав метода fillInGraph одинаковый у меня и на гитхабе, т.е. ошибка где-то в логике манипуляции с данными снятой трассы..
п.с. если поможешь завести - зашлю пару сотен на телефон)
Аноним 25/04/21 Вск 19:24:12 2008329186
>>2008316
Никак. Для каждого ключа в словаре будет одно значение. То есть, у тебя в одном словаре может быть, например, 'A':'Hearts' или 'A':'Diamonds', но не одновременно.

Если нужен список всех пар, то cards = [(v, s) for v in value for s in suits]
Аноним 25/04/21 Вск 19:33:51 2008339187
>>2008327
отличие моего кода от гитхаба (если там рабочий) здесь:

у меня открытие файла трассы:
filepath = idaapi.askfile_c(False, ".", "Pin log file");
f = open(filepath,"rb" )
text = f.read()
matches = re.findall(pattern, text)

на гитхабе:
text = open(filename).read()
matches = re.findall(pattern, text)

может, состав переменной "text" отличается, т.е. код не эквивалентный? Код с гитхаба по открытию не работает, видимо, другой состав функция СДК питона. У меня при запуске плагина появляется окно выбора файла трассы и его открытие. код до сообщения "idaapi.msg("fillInGraph\n")" работает, сообщение появляется, т.е. парсинг файла проходит..
Аноним 25/04/21 Вск 19:35:25 2008340188
>>2008339
быстрофикс:
на гитхабе:
text = open(filename).read()
matches = re.findall(pattern, text)
Аноним 25/04/21 Вск 19:36:15 2008343189
>>2008340
быстрофикс:
на гитхабе:
text = open(filename).read()
matches = re.findall(pattern, text)
Аноним 25/04/21 Вск 19:42:02 2008347190
>>2008329
Спасибо! Не знал, что List Comprehension можно использовать таким образом для двух списков, и что он будет работать именно так. И да, со словарем ступил, он и вправду был бы невозможен.
Аноним 25/04/21 Вск 20:09:10 2008376191
>>2008339
>т.е. код не эквивалентный?
Эквивалентный так-то.

Я не работал с windbg, но так понял, что форматы генерируемых log-файлов могут быть разными: https://docs.microsoft.com/en-us/windows-hardware/drivers/devtest/trace-message-format-file
Так что, может быть, у тебя и код правильный, но то, что ты получаешь от windbg приходит немного не в том виде, что нужен.

Скинь пример лог-файла, который ты хочешь обработать.
Аноним 25/04/21 Вск 20:12:33 2008379192
Аноним 25/04/21 Вск 20:14:21 2008384193
>>2008263
Если каких-то особо специфичный требований нет, то, конечно, такое делается на уровне ОС, обычно, там есть системы, которые запускают программы по расписанию. Что конкретно надо делать, зависит от ОС. Если у тебя там разновидность линукса, почитай про cron и systemd timers, в винде такая штука называется планировщик заданий (Task Scheduler)
Аноним 25/04/21 Вск 20:48:45 2008430194
>>2008376
вот файл и его трейс:
https://disk.yandex.ru/d/ub_3do4q1Z8NqQ
Отркрывать в ИДА_6.8 (теоретически, должна подойти любая версия 6.х). Нужно установить на диск С питон_2.7 и закинуть плагин в соответствующую папку ИДЫ.
вот плагин:
https://disk.yandex.ru/d/9XSeJzunyZ6bZg
п.с. трейс снимается с помощью "Debugging Tools for Windows" под W7, он стандартный. Под W10 wdbg стал поддерживать js, новый плагин windbgida на гитхабе.. не проверял.
Аноним 25/04/21 Вск 20:51:51 2008434195
Screenshot2.png 12Кб, 1040x106
1040x106
>>2008430
вот что ответили на одном форуме:
Может, версия питоне не подходит? Странно.. ИДА6.х работает с питоном 2.7, название файла об этом говорит..должно как-то работать!
Аноним 25/04/21 Вск 21:07:44 2008452196
>>2008434
Нет, дело не в этом, хотя я тебе поначалу то же самое написал про кортежи и индексы. Просто в том коде на гитхабе переменная с именем match используется в двух разных функциях в двух разных смыслах. В parseFile - это кортеж, а в fillGraph - это уже словарь. Когда ты эти функции запихал в одну, произошла накладка, которую фикс с for match in ret решает.

Аноним 25/04/21 Вск 21:10:11 2008459197
Ну мне понравилось
Аноним 25/04/21 Вск 21:22:53 2008486198
Аноним 25/04/21 Вск 21:29:33 2008492199
>>2008486
Попробуй заменить строку pattern = ... в гитхабовском коде или своем на вот это: https://pastebin.com/T0R8j2ry

У меня нет сейчас IDA под рукой. Не могу проверить.
Аноним 25/04/21 Вск 21:43:54 2008508200
>>2008189
ебаные регулярки, бесят
Аноним 25/04/21 Вск 21:45:34 2008511201
>>2008492
гитхабовский файл не совместим с ИДА6.8 - другая структура плагина, требуется def PLUGIN_ENTRY():
Если и изменять (максимально почти рабочий), то этот "оригинальный" файл:
https://disk.yandex.ru/d/k5RiDSvaHCaxvA
который тоже вызывает ошибки
Аноним 25/04/21 Вск 22:38:30 2008589202
Лучше обьясни, как можно серьезно что-то реверсить, и реально спотыкаться на простых задачках вроде питона или регулярок.

Я всегда завидовал способности настоящих инженеров разобраться на ходу с такой хуйней. Их научили архитектуре базовых процессоров вроде 8080 или з80, их научили базовой цифровой схемотехнике, их научили си, как связывающим всё это, дальше лишь дело желания.
Но с другой стороны, на виду истории всяких кулхацкеров-кардеров, в 95% полнейших селюков и дилетантов, хуй проссышь, короче.
Аноним 25/04/21 Вск 22:52:35 2008612203
>>2008589
Да я любитель-самоучка, ни разу не программист (немного на pb пописываю и asm читаю, могу в студии исходник собрать). Ни образование, ни работа никак не связаны с "хобби", на которое ещё и времени не хватает..
Аноним 25/04/21 Вск 22:57:09 2008615204
>>2008612
Пуребасик и асм?
Со спектрума дид штоле?
Аноним 25/04/21 Вск 23:34:52 2008646205
>>2008511
Попробуй так: https://pastebin.com/Kdpcenmk

В принципе, твой пример лог-файла парсится. Как оно там раскрашивается или нет - не знаю, так как на моей бесплатной версии IDA нет питона.
Аноним 25/04/21 Вск 23:40:01 2008649206
Нужно сгруппировать данные в список по дням в датафрейме в нескольких колонках.
Для одной работает
df.groupby(pd.Grouper(key="dates", freq="D"))['column1'].apply(list).reset_index()
Но если взять две
df.groupby(pd.Grouper(key="dates", freq="D"))[['column1', 'column2']].apply(list).reset_index()
то получается в каждой строчке список из названий колонок вместо данных вот так
['column1', 'column2']
['column1', 'column2']
['column1', 'column2']
Как быть?
Аноним 25/04/21 Вск 23:50:12 2008659207
Аноним 26/04/21 Пнд 00:26:17 2008699208
>>2008649
df.groupby(pd.Grouper(key="dates", freq="D"))[['column1', 'column2']].agg(list).reset_index()
Аноним 26/04/21 Пнд 00:30:30 2008706209
>>2008699
Спасибо няша. Натыкался на функцию .agg, но так использовать не догадался бы.
Аноним 26/04/21 Пнд 07:51:53 2008828210
>>2008646
ида лежит на торрентах:
https://yandex.ru/search/?text=ida%206.8%20torrent&lr=110907&src=suggest_T
ошибок запуска плагина нет, но дерево не закрашивается. Подозреваю из-за того, что отпарсенное значение "matches" не доходит из процедуры "parseFile" в "fillInGraph". Процедура "parseFile" ничего не возвращает, в результате в "fillInGraph" значение "matches" пустое - новая локальная переменная (кортеж/список или чем он там является)..
Аноним 26/04/21 Пнд 09:07:08 2008842211
Что такое кубкрнетис ребята и зачем нужно?
Что означает когда говорят дженкинс в контейнере в дженкинсе? Это какая-то новая мода?
Аноним 26/04/21 Пнд 09:42:12 2008849212
>>2008842
да, типа смузи в коворкинге
Аноним 26/04/21 Пнд 22:36:43 2009614213
image.png 88Кб, 742x357
742x357
image.png 97Кб, 809x366
809x366
image.png 107Кб, 985x920
985x920
Это такой троллинг? В чём я не прав то? Почему оно добавляет данные только со второго раза?
Аноним 26/04/21 Пнд 22:49:39 2009623214
>>2009614
Подозреваю, что дело в буфферинге.
Можешь добавить принудительный file.flush(), а потом пиздуй читать документацию, как там всё устроено.
Аноним 26/04/21 Пнд 22:59:57 2009642215
>>2009623
Да вряд ли такое должно происходить. Я же этот файл до этого не трогал. Да и если впихнуть flush, не особо помогает.

Может дважды вызывать врайт это не плохая идея?
Аноним 26/04/21 Пнд 23:21:20 2009661216
>>2009642
Замечательно помогает.
Запускаем такой код https://ideone.com/n94Fjf
Сразу при запуске пишется test и висит, потом жмем ctrl+c, валится эксепшн, буфер сбрасывается и видим test2.
Аноним 26/04/21 Пнд 23:22:20 2009662217
>>2009614
Через контекстный менеджер попробуй и с режимом работы поиграйся.
Аноним 26/04/21 Пнд 23:33:05 2009668218
>>2009614
Зачем ты переоткрываешь файл каждый раз? Закрывать файл тоже надо.

У тебя проблема в том, что ты открываешь его как "w+", из-за этого указатель каждый раз на начало ставится и твой TEST перезаписывается.

Тебе надо открывать файл как "a", то есть append. Тогда указатель будет на конец файла указывать.

Но на самом деле тебе надо куда сильнее переписывать всё это дело.
Аноним 26/04/21 Пнд 23:43:13 2009676219
>>2009614
>>2009668
И дополню
Проверка в строке 51 на самом деле лишняя, так как домены без точки не пройдут проверку на строке 53

Строки как в 53 лучше записывать как
site_name not in ["bloomberg.com", "nytimes.com"]

имя файла лучше получать используя os.path.join
file_name = os.path.join(dict_name, site_name.split('.')[0])

С файлом работать через контекстный менеджер
with open(file_name, 'a') as file:
____file.write("TEST")

тогда автоматом файл будет закрываться

Аноним 27/04/21 Втр 00:24:19 2009703220
>>2009668
Даже с "a" не работает. Только если делаю
write
flush
write
Но так оно и с w+ работало.

За ошибки в принципе пофиг, это один из этапов проектов, что-то на будущее сделано, что-то я скоро удалю. Хотя за джоин почитать стоит.
Аноним 27/04/21 Втр 00:38:43 2009710221
Иногда смотрю в access логи сайтика, который сдал недавно, меня аж в пот бросает от этих логов, сайт не рабочий и все логи состоят из чего-то похожего /shell?wget+147.153.15.85:8080/strashniy_script+/tmp, успокойте меня пожалуйста, я вроде и понимаю что это боты, но интстинктивно иду проверять /tmp, конфиги nginx’а и т.д
Аноним 27/04/21 Втр 00:58:03 2009726222
>>2009710
Такие боты генерируют дохуища логов, особенно в пропаленных диапазонах айпи. Что по хттп, что по ссх.
Можешь поставить себе какой-то fail2ban для спокойствия.
Аноним 27/04/21 Втр 07:48:41 2009844223
>>2008828
кажется, разобрался:
1. имхо, автор плагина усложнил без необходимости плагин, который пишется из трёх строчек, так как:
-вывод лога wdbg можно сильно упростить командой "par 0xdeadbeef" или другой, отключающей вывод регистров
- нам от лога нужно только знать выполняется ли jmp/jne/jxx (то есть трейсить, проверять опкод функцией "GetMnem" на "jmp/jne/jxx") и подсвечивать функцией "idc.SetColor(0x41705B, CIC_ITEM, 0xBFBFE4)", где первый аргумент - адрес опкода
2. независимо от того, работает ли парсинг.. скрипту нечего подсвечивать, потому что в логе wdbg отсутствуют подходящие адреса! - все адреса в вызываемых модулях! Возможно, в новых версиях поменялся вывод wdbg.

Спасибо огромное за помощь!
Аноним 27/04/21 Втр 09:59:35 2009879224
Есть какой-то курс или задача, которая позволит держать Большую часть знаний в голове активными? У меня пока так, выучил одно, забыл второй, повторил второе забыл третье и то.
Аноним 27/04/21 Втр 10:18:17 2009897225
image.png 24Кб, 453x262
453x262
Запутался с импортами, аноны.
Есть два скрипта в одной папке. Из одного импортирую в другой как на скрине. Все работает, но VS Code дает предупреждение. Что не так?
Аноним 27/04/21 Втр 10:19:43 2009898226
>>2009897
Ну наведи мышкой и прочитай, гений блять
Аноним 27/04/21 Втр 10:29:05 2009902227
>>2009898
Блять, я прочитал "Import "product" could not be resolved". Спрашиваю, потому что все работает. Интересно, это типичное поведение для VS Code или нужно заморочиться и исправить?
Вася !pgceiWlm/c 27/04/21 Втр 10:33:35 2009905228
image.png 12Кб, 400x248
400x248
Подскажите, пожалуйста, есть модель и связь на саму себя. Когда я пытаюсь добавить поле 'parent' в forms, то он пишет, что не существует у этой модели такого поля. Заранее спасибо.
Аноним 27/04/21 Втр 12:16:17 2010003229
>>2009905
UPD: Нашел логическую ошибку, все поправил.
Аноним 27/04/21 Втр 17:42:30 2010488230
>>2009726
Слушай, давно хотел узнать, есть какой-то список классических приложений для сайта, которые вот как fail2ban, банят при ддосе, ограничивают читая логи, качают много медиа, допускают только проверенные юзерагенты и т.д, наверное еще много чего есть полезного, подскажи
Аноним 27/04/21 Втр 18:32:42 2010566231
Monty Hall.PNG 34Кб, 595x885
595x885
>>2003913 (OP)
Сап двач. Начал учить питон буквально 4 дня назад. Пока тренируюсь, пишу всякие кодики в рамках моих знаний, а их очень мало пока.
Вот пикрелейтед код. Он должен симулировать парадокс Монти Холла. В данном случае я попытался написать случай, когда после вопроса ведущего дверь меняют. Тоесть должно быть около 67% выигрышных ситуаций. Но прогоны выдают около 33%. Значит где то в кусках if, elif семантическая ошибка.
Если кому не лень, посмотрите может подскажите где там я ошибся.
Аноним 27/04/21 Втр 18:42:25 2010579232
Как озвучивать текст кроме как через встроенного в винду TTS ?
Я нашел модели голосов
https://github.com/snakers4/silero-models#text-to-speech
но не знаю как их прикрутить. Нашел вот такой пример
https://colab.research.google.com/github/snakers4/silero-models/blob/master/examples_tts.ipynb#scrollTo=indirect-berry
но тут используется display и, как я понял, обрабатывается долго из-за того, что это удаленный серв. Можно ли как-то вшить его себе в винду или просто запускать стационарно, если скачаю файл этого TTS?
Аноним 27/04/21 Втр 18:52:08 2010589233
>>2010566
Условия неправильны. Получается choiz == ('A' or 'B')
надо x == 'A' or x == 'B' или как вариант x in 'AB'
Аноним 27/04/21 Втр 18:54:47 2010592234
16090088677230.jpg 67Кб, 500x742
500x742
Аноним 27/04/21 Втр 20:11:44 2010644235
Аноны, вроде достаточно много прогаю на питоне и понимаю ооп, но есть такой вопрос, в этих ваших джавах есть очень много всего и интерфейсы и полиморфизм типов и из-за этого кажется что питон это урезанный язык, но если копать глубже, то как по мне все это дедовское брюзжание и нахер не нужно, все чего достаточно это множественное наследование, возможность оверрайдить методы и сам принцип объектов, в чем я не прав?
Аноним 27/04/21 Втр 22:11:24 2010745236
>>2003913 (OP)
Мужики, что надо знать по джанге чтоб устроится джуном?
Аноним 27/04/21 Втр 22:11:31 2010746237
>>2010644
Есть два подхода для реализации идей ООП, один подход всё делать через интерфейсы, второй подход через "протоколы", он же duck typing.

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

Когда язык динамический, ты можешь получать эти функции по имени. Тебе не нужно формировать интерфейс, тебе достаточно, чтобы был нужный набор методов у объекта, это и называется протоколы.

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

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

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

На питоне всё-таки мегапроектов нет.
Аноним 27/04/21 Втр 22:18:04 2010753238
>>2010644
Ну так-то в питоне тоже есть и полиморфизм и интерфейсы (например, через декоратор abstractmethod из abc). Так что, трудно назвать его урезанным в плане ооп. Парадигму "всё есть объект" он вполне реализует. Чего нет - так это строгой инкапсуляции (нет настоящих private свойств или методов), что Гвидо сделал намеренно ( "we're all consenting adults here").
Аноним 27/04/21 Втр 22:34:31 2010776239
изображение.png 40Кб, 589x502
589x502
Вопросы по argparse
1 как установить чтобы аргумент -h вызывался при запуске скрипта без аргументов?
например python app.py выдает тоже что и python app.py -h
2 почему функции устанавливаемые в set_defaults(func=) требуют аргумент?

код: https://pastebin.com/gUHNWmjV
Аноним 27/04/21 Втр 22:44:50 2010785240
>>2010753
Я кстати понял, что был лучшего мнения о джаве, чем вот она заслуживает. На джаве сильно сложнее fizzbuzz не писал, на плюсах ООП писал, но давно и забыл уже.

Посмотрел, проблема с конфликтом имён актуальна и для джавы. То есть если в двух интерфейсах есть метод с одинаковым именем, но разный по сути, то будет большая проблема.

А раз так, то весь смысл интерфейсов теряется, никакого профита. Просто технология, как это реализовать в статическом языке, не актуальная для динамического языка как питон.

Хотя ХЗ, возможно я чего-то не знаю. Наверное есть решения для этих проблем на джаве, должны быть.

Аноним 27/04/21 Втр 23:49:00 2010826241
Понимаю, что вопрос не по питону (и не по джанге), но как реализовать выпадающий список из 50+ тысяч элементов в шапке колонки таблицы? Сделал это через DataTables, как выше писали, и при загрузке страницы, если попробовать раскрыть такую эболу, то сайт подвисает. Наверно есть более правильный способ (кэш или динамическая подгрузка), нормальный за 2 дня не нагуглил. Прошу помощи. За более подробную консультацию в личку, за деньги, ибо чую, что не тяну, но проект сдать хочу (и уволиться)

Тот самый долбоёб, который решил себя попробовать в роли питухон-разраба
Аноним 28/04/21 Срд 00:10:49 2010856242
>>2010826
Ты ебанутый, и что пользователю делать с твоим выпадающим списком? Делой текст инпут с автокомплитом.
Аноним 28/04/21 Срд 00:24:53 2010870243
chart.jpeg 111Кб, 2080x820
2080x820
Потыкал в матплотлиб, открыл обучалку и мне дико понравилась визуализация данных.
Сам изучаю чисто по фану без особой цели устроиться, но вот интересно, этим в рахе можно заработать(питон, скьюэл, визуализация, может панда с нимфи и прочее туда же) ?
Аноним 28/04/21 Срд 00:25:13 2010871244
>>2004556
После "а" должна быть h иначе
Аноним 28/04/21 Срд 00:28:20 2010872245
>>2010870
Да, это называется Business Intelligence (BI), погугли вакашки, голодным не останешься.
Аноним 28/04/21 Срд 00:33:05 2010879246
12345.jpg 86Кб, 676x732
676x732
>>2010872
Ха, прикольно, все есть кроме интрументов, хотя там буквально написано в их описании "Позволяет заниматься БИ без вмешательства айти департмента" кек, ну и джаваскрипта тоже нет, ну и нахуй его.
Аноним 28/04/21 Срд 00:49:57 2010900247
>>2010856
>и что пользователю делать с твоим выпадающим списком?
Я ебу что ли, так в тз написано. Значит попробую сделоть инпут с автокомплитом, а потом уволюсь. Спасибо, за идею.
Аноним 28/04/21 Срд 09:39:19 2011091248
>>2010826
Как тебя взяли тогда, если ты не могешь?
Аноним 28/04/21 Срд 10:32:45 2011135249
Аноним 28/04/21 Срд 12:02:54 2011236250
>>2011091
Сказали, что питоновских знаний хватает, а джангу и веб смогу изучить за месяц для решения нужных им задач. Но вот неделю уже пытаюсь решать, и с джангой более-менее понятно, но веб темный лес.
Аноним 28/04/21 Срд 12:56:30 2011325251
16093392910980.jpg 248Кб, 1199x1600
1199x1600
>>2011135
Нет это интернетные котенки
Аноним 28/04/21 Срд 14:02:49 2011383252
Знаете, почтенные. Изначально я хотел написать пост в постмодернистской манере и взять картинку с сортырно-фекальным няряльщиком, но передумал.

Так вот. Господа!
Заинтриговало меня существование этого вашего Питона.
Дайте краткое заключение о практической целесообразности применения и смысле существования Питона.
Для человека, почти ничего не понимающего в программировании.
Буду признателен. Мой интерес искренний, если что.

Предпосылки:

- у меня на Питоне подмастерье пишет, отзывается о Питоне, как о годноте;
- я сам не занимаюсь промышленным программированием (в том смысле, в котором программа является отчуждённым промышленным продуктом, а не промышленным инструментом, связанным с технологическим процессом);
- сильное влияние на меня как инженера оказал Си,
- ощущается мной избыточная детализация программы на Си — хочется решать задачу ближе к задаче, а не к адресной арифметике.
Аноним 28/04/21 Срд 14:03:23 2011385253
lUOt8Dulwy8.jpg 46Кб, 406x514
406x514
>>2011383
Волновался. Даже картинку забыл. Извините!
Аноним 28/04/21 Срд 14:12:39 2011396254
>>2003913 (OP)
Пацаны, там чувак с канала диджитализируй выложил свой курс по веб-технологиям, он вроде сам хорошо рассказывает
https://www.youtube.com/watch?v=Cug9a8Aw2W0
https://stepik.org/course/96018/promo
Я даже бабло отложил под его курс(10к) но его цена(20к) че-то сильно на жабу давит
Вопрос: как думаете, как скоро появится на сливах и трекерах?
Аноним 28/04/21 Срд 14:12:59 2011398255
>>2011325
Лол, у тебя целый пак?
Аноним 28/04/21 Срд 14:13:48 2011400256
>>2011396
нужно срочно взломать эти курсы.
Аноним 28/04/21 Срд 14:16:15 2011405257
>>2011400
Согласен, я пошуршал по торрентам, как-то редко со степика сливают, я так понял только официальные курсы от хозяев степика в основном слиты
Интересно, хотя бы в течение месяца появится ли на торрентах
Аноним 28/04/21 Срд 14:17:24 2011407258
>>2011383
Замечательный прикладной язык, очень приятный в изучении. Не знаю, насколько тебе это надо и какие задачи ты собираешься решать, но можно попробовать, если интерес есть.
Аноним 28/04/21 Срд 14:17:35 2011408259
>>2011383
>Дайте краткое заключение о практической целесообразности применения и смысле существования Питона.
>Для человека, почти ничего не понимающего в программировании.
Ну ок:
Питон это пиздец как круто
Это строго и свободно одновременно, стройно и красиво
Это зрело и вполне молодёжно
Это дофига возможностей, чтобы писать хорошо и быстро
Это лучшее комьюнити, хорошая документация

Думаю, этого достаточно.
Аноним 28/04/21 Срд 14:21:16 2011412260
>>2011396
Это тот чел, который в своем видении необходимого для джуниора вывалил список аля фулстак?
Аноним 28/04/21 Срд 14:24:16 2011415261
>>2011412
Он для бэкэнда на питоне составлял список, про фронт там было сказано что будет плюсом знать html/css/js по верхам. линукс базово и тд
Че нет то в современных реалиях? С голым питоном наврядли куда джуном возьмут
Аноним 28/04/21 Срд 14:24:19 2011416262
>>2011396
>чувак с канала
Интересно, он сам жестикулировать учился, вот все эти жесты учил и тренировал, или может есть какие-то специальные курсы для влогеров? Сколько стоят такие?
Аноним 28/04/21 Срд 14:24:37 2011417263
>>2011407
Мелкая автоматизация. Там, где клей между готовыми утилитам (вроде bash) становится громоздким и неудобным, т. к. нужно дописывать много. Числодробление, матрицы, линейные пространства, оптимизационные задачи. Там, где matlab предоставляет слишком сложные абстракции.

>>2011408
>Это лучшее комьюнити, хорошая документация
На старте хотя бы мне будут доступны русскоязычные источники?
Аноним 28/04/21 Срд 14:27:14 2011420264
>>2011396
Когда вы успокоитесь со своими поисками ИДЕАЛЬНЫХ курсов?
Берешь любой популярный курс или книгу и хуяришь. Там одна и та же базовая хуйня, дальше надо лезть вглубь самостоятельно.
Аноним 28/04/21 Срд 14:27:41 2011421265
>>2011415
Если ты занимаешься чем-то, что хоть отдалённо имеет отношение к интернету, но не знать html/css хоть на базовом уровне это просто полное дно. JS тоже как-то знать надо. Вопрос в глубине этого как-то.

Ну в любом случае представление о вёрстке необходимо, как и понимание, как JS работает с браузером и бэкендом.
Аноним 28/04/21 Срд 14:31:42 2011427266
>>2011417
>Числодробление, матрицы, линейные пространства, оптимизационные задачи. Там, где matlab предоставляет слишком сложные абстракции.
Там тебе придётся учить numpy и другие пакеты, с ними бошку сломать придётся и это не совсем питон, строго говоря. Но правда на других платформах не проще.

ХЗ, что в матлабе, подозреваю что примерно тоже самое.

>На старте хотя бы мне будут доступны русскоязычные источники?
Что-то есть и на русском.
Аноним 28/04/21 Срд 14:33:31 2011428267
>>2011427
Тащемта все эти пандасы и нампаи это и есть прикрученный к питону матлаб, р и прочая околонаучная тряхомудия.
Аноним 28/04/21 Срд 14:34:20 2011430268
Аноним 28/04/21 Срд 14:35:53 2011432269
>>2011430
Ждем курсы по правильному дрочению жопы для вебкама.
Аноним 28/04/21 Срд 14:37:39 2011433270
>>2011421
Ну то есть он, ты и я сошлись во мнении.
Чего бухтеть то
Аноним 28/04/21 Срд 14:42:57 2011436271
>>2011420
Я в том то и дело что базовую хуйню уже знаю
Хочется более глубоко про устройство интернета, протоколы, безопасность
Там целая глава про питон, за нее особенно платить впадлу, потому что за то время, пока он целый год этот курс высирал, я уже 100 курсов посмотрел и напрактиковался
Аноним 28/04/21 Срд 14:55:15 2011446272
Аноним 28/04/21 Срд 14:55:51 2011448273
16103787192710.jpg 160Кб, 960x1280
960x1280
>>2011398
Нет, не пак, но немного есть
Аноним 28/04/21 Срд 14:56:23 2011451274
>>2011427
>>2011408
>>2011407
Спасибо!

Вот, что вынес:
> прикладной язык
> приятный в изучении
> строго и свободно одновременно
> стройно и красиво
> писать хорошо и быстро
Аноним 28/04/21 Срд 14:56:24 2011452275
>>2011436
Моё мнение, курсы могут быть полезными только как обзорные, о чём-то рассказать в простой форме, показать, как какой-то инфраструктурой или инструментами пользоваться. Чтобы уже дальше было понятно, куда копать.

Если нужно глубже, то надо или смотреть университетские лекции, или читать книги.

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

Это довольно широкая тема.
Аноним 28/04/21 Срд 15:27:57 2011493276
>>2011420
Это какая-то русская проблема. Может из-за того что у нас принято 90% быдла ломиться в вышку где учиться то и не особо сложно. Поэтому все люди автоматом подразумевают что тебя будут учить корифеи, деды, опытные ветеренары своего дела. В США, например, либо плати 100к в год, либо будь гением, либо учись сам, самое дорогое что там есть - буткамп, а так все курсы(скорее интерактивные сайты) это всякие кодакадеми, джет брейнс, удасити - стоят 200 баксов в год. Такой хуйни чтобы американец платил условные адаптированные под него 200к рублей и учил какую-то дичь год от ОПЫТНЫХ ПРЕПОДАВАТЕЛЕЙ(которые не гуглятся, и конторы в которых они работают якобы вообще не существуют) это просто нонсенс.
По факту человеку для обучения адекватному достаточно лишь списка технологий и библиотек которые надо осилить. Голого питона как бы и не существует, что там иф, ваил, класс, деф, фор, лист/дикт/сет/тупл и что я там забыл? Все остальное - библиотеки, sql, джсон, хтмл+цсс+жс, гит.
Курсы на которых тебе как работает гит рассказывают месяц или учат делать первый сайт с пиццами взятыми из стока гугла 6 месяцев, ну не смешите
Аноним 28/04/21 Срд 15:40:26 2011509277
>>2011493
>Голого питона как бы и не существует, что там иф, ваил, класс, деф, фор, лист/дикт/сет/тупл и что я там забыл? Все остальное - библиотеки, sql, джсон, хтмл+цсс+жс, гит.
Голый питон это ещё импорты, классы и объектная модель, метаклассы, стандартная библиотека и связанные с этим подходы вроде логгинга, тайпинг, itertooks, разные докстринги, конкурентность, тестирование. Куча своих паттернов проектирования.

То есть как бы освоить язык и уметь писать на нём это на самом деле не "пара недель" даже для опытного программиста. Иначе ты будешь писать на питоне как на Си или ЖС.

>По факту человеку для обучения адекватному достаточно лишь списка технологий и библиотек которые надо осилить.
Нужна программа обучения, как все эти технологии осваивать. Вот как освоить технологию "параллельного программирования"? Или даже ООП? Это всё длительный и многоэтапный процесс.

Правда курсы в этом мало помогут. Надо делать поправку, что курсы для тех, кто хочет чуть заплатить и пассивно поучиться. Просто таких большинство. А нормальное образование это совсем другие ресурсы, другие затраты и другая подготовка.
Аноним 28/04/21 Срд 15:46:08 2011522278
>>2011493
Мань в США без вышки в гугл ты точно не попадешь
Ты видимо даже не знаешь слово синтаксис
Аноним 28/04/21 Срд 15:49:55 2011533279
>>2011509
>Голый питон это
Нет, ты молодец конечно, но вот только на курсах типа скиллбокса голвый питон это как раз то что я написал, а все что ты пишешь там дается просто как упоминание.
>Нужна программа обучения, как все эти технологии осваивать.
Не нужна, такого не существует, и программа обучения именно как педагогический/методический термин из образования к тыканью в библиотеку не применим вообще. Если человек хочет учить программирование по учебной программе - добро пожаловать в вуз, где разваливающийся дед тебе будет 2 года задвигать базовую физику и математику, потом 2 года будет рассказывать про транзисторы и параллельно будешь делать какую-то хуйню на си или плюсах, в итоге на 4м курсе когда ты напишешь охуенную приложуху распихивающую студентов по категориям в датабазу и увидишь этот же самый проект в джетбрейнс под тегом МЕДИУМ ДИФФИКУЛТИ станет немного понятнее почему это не самый эффективный способ осилить именно язык, а не набор хуйни в виде глубокой информатики, сигналов, кодирования и прочей шелупони абсолютно не нужной 99% времени.
>>2011522
В сша для американца без американской вышки или ты про русского без русской вышки который хочет в гугл?
В гугл не нужна американская вышка, берут так же по опыту, стажу, технологиям и собесу.
В сша менее 8% людей идет в вузы, выкинуть половину вузов которые не обучают информационным технологиями, выкинуть 80% факультетов которые не являются пригодными для ФАНГ, останется дай боже сотка специалистов с вышкой в год, как все фейсбуки, гуглы, амазоны, цитадели, плюс государство наберет себе программистов если их нихуя не выпускают вузы, а?
Аноним 28/04/21 Срд 15:56:01 2011552280
>>2011533
>как все фейсбуки, гуглы, амазоны, цитадели, плюс государство наберет себе программистов если их нихуя не выпускают вузы, а?
Раскрываю секрет века: русские, индусы, украинцы
По тому, что ты говоришь, видно, что тебе никогда не доверяли более или менее серьезную задачу.
Способности ответственно выполнять задание можно научиться только, если тебя раньше ебали за плохой некачественный результат. Поэтому преподы и менторы имеют свою копейку
Аноним 28/04/21 Срд 16:09:44 2011587281
>>2011533
>В гугл не нужна американская вышка, берут так же по опыту, стажу, технологиям и собесу.
Нет, можно попасть в ФААНГ без вышки, но, там примерно 90% работает с вышкой.

>В сша менее 8% людей идет в вузы
Сам придумал? В США свыше трети населения возраста 25+ имеют степень бакалавра. 13% это магистры и старше.

>разваливающийся дед тебе будет 2 года задвигать базовую физику и математику
Иди в нормальное место и параллельно учись сам.

Образование системно. Нельзя полноценно осваивать базы данный, не умея в алгоритмы, например. То есть только на уровне маками можно, которая не понимает, что такое сложность, сложность выборки, почему какие-то операции дорогие, а другие нет, что такое нормализация, когда она нужна, а когда не нужна.

И куча всего ещё.

Да, если чел не хочет учиться, то в ВУЗе его ничему не научат, это факт. То есть сдаст экзамены и зачёты, но применять знания не сможет. Если хочет учиться, то помимо того, чтобы дополнительные курсы брать по выбору, ещё и самому доучиваться придётся, это тоже так.
Аноним 28/04/21 Срд 17:52:03 2011736282
>>2011405
будем следить внимательно!
Сообщи если что появится, ок?
>>2011448
Где ты их находишь?
Аноним 28/04/21 Срд 20:14:59 2011904283
Не совсем питон-релейтед вопрос, скорее по алгоритмизации.
Есть файл А, АВ и В.
А — csv файл, нужно привести в нормальный вид
В — xls файл, нужно перевести в csv формат
АВ — соответственно нормализовать и перевести в csv

Как это грамотнее сделать?
Меня просто смущает момент АВ, потому что я сначала записываю csv файл, ранее бывший xls, а потом планирую его же перезаписывать writerow'ом.
Аноним 28/04/21 Срд 20:21:45 2011913284
>>2011904
Ты как-то коряво обьяснил.
Зачем перезаписывать, если можно за один заход?
Аноним 28/04/21 Срд 20:25:59 2011922285
>>2010785
Нет такой проблемы в жаве, хз откуда ты это взял. Имплементишь в объекте два интерфейса с одинаковыми именами методов - обязан предоставить два метода. Главное, чтобы аргументами методы отличались.
А если у тебя два интерфейса и с одинаковыми методами, и аргументами внутри, при этом по смыслу работы не являющиеся альтернативными реализациями одного интерфейса, то это очевидный признак плохого дизайна системы.
Аноним 28/04/21 Срд 20:49:07 2011950286
>>2011913
> можно за один заход
Хау? Не записывать содержимое xls в файл и просто в оперативе его крутить?

Короче как выглядит задача:
У меня есть инпут папка. В ней А, В или АВ, либо все вместе. Мне нужен класс с минимальным повторением кода, который бы мог на выходе дать в папку аутпут нормализованный файл с тем же названием.
Процесс нормализации, вкратце, перевод файла из вида
+,C1,C2,C3,C4
R1,VVVV
R2,VVVV
R3,VVVV

В вид
R1,V,C1
R2,V,C1
R3,V,C1
R1,V,C2
R2,V,C2
...
Аноним 28/04/21 Срд 20:55:45 2011953287
>>2011950
Ну так в любом случае надо вычитать весь файл, чтобы переформатировать так, не? Так зачем дважды ходить?
А с названиям в принципе легко. Читаем file.csv, пишем file.csv~, потом в конце rename и он заменяется.
Аноним 28/04/21 Срд 21:20:19 2011976288
16131685336350.png 313Кб, 749x749
749x749
>>2011736
>Где ты их находишь?
лол в /b
ну я там сидел 4 года, два месяца назад перестал туда заходить, а на прошлой неделе начал учить погромирование и пришел сюда.
но в /b больше не хожу, потому что я старый уже и мне нельзя прокрастинировать
Аноним 28/04/21 Срд 21:21:34 2011977289
В языке Python есть какие-то рекомендации по использованию одинарных и двойных кавычек? Может есть какие-то негласные правила, о которых я не знаю? Мне как программисту на языке SQL хочется везде писать одинарные, но в коде других людей чаще вижу двойные.
Аноним 28/04/21 Срд 21:23:57 2011980290
>>2011953
У меня было еще решение элегантнее, если файл xls и ему нужно нормализация, то сохранять его csv с постфиксом. После нормализации сохранять файл с правильным названием общий метод для изначально csv и 'бывших' xls файлов и os.unlink по файлу с постфиксом, если такой существует.
Но один хуй я сейчас все переписал, теперь у меня все методы возвращают лист листов, а записывается файл лишь в конце мейн метода.
Аноним 28/04/21 Срд 21:24:32 2011982291
>>2011977
Одинарные и никак иначе.
Аноним 28/04/21 Срд 21:37:44 2011995292
>>2011976
там тред с котятами?
в б одна молодёжь тутусется в основном? битарды или кукбои?
Аноним 28/04/21 Срд 21:38:20 2011997293
Аноним 28/04/21 Срд 21:38:22 2011998294
>>2011977
работают они одинаково.
можешь одинарные ставить
Аноним 28/04/21 Срд 21:49:00 2012005295
>>2011977
Одинарные ближе перловикам, пехопистам и может кому ещё, потому что там они не интерполируются. Ну и без шифта пишутся, тоже заебись.
Аноним 28/04/21 Срд 21:52:09 2012007296
>>2011977
Двойные кавычки гавно. Ну представь тебе надо в логи дампнуть `foo = "bar"`. С двойными заебешься внутри слэши прописывать
Аноним 28/04/21 Срд 21:58:56 2012012297
>>2011976
Напиши парсер котеек из /b
Аноним 28/04/21 Срд 22:35:30 2012025298
На чем делают графические приложения на Python? Сделаю скромную петуху для души.
Хочется, конечно, чтобы штука была относительно популярная и с большим комьюнити, легкая для вката, изящная в реализации, сильная в возможностях. Но чем-то можно и пожертвовать.
Вроде как PyQt самое популярное, как оно? Или еще что-нибудь?
Аноним 28/04/21 Срд 23:07:43 2012049299
>>2011977
В PEP8 указано, что рекомендаций по выбору нет.

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

Так довольно удобно.
Аноним 29/04/21 Чтв 01:06:11 2012188300
>>2012025
>На чем делают графические приложения на Python?
Почему именно на питоне? Питон - топовый язык для датасаенса и еще некоторых областей, но графику на нем лучше не делать. Это долго, сложно и бесполезно с точки зрения приобретенных навыков.
Аноним 29/04/21 Чтв 01:44:17 2012227301
>>2012188
Понимаю прекрасно, мне для души. Поэтому и хочется минимум усилий потратить, сделать свою хуйню и успокоиться.
Аноним 29/04/21 Чтв 08:41:17 2012371302
Хелп, не работает ctrl+shift+/ в пайчарме чтобы закомментировать блок кода, перебрал все ебаные слеши на клаве, с разной раскладкой, а, бля да почему
Аноним 29/04/21 Чтв 08:43:20 2012372303
image.png 2Кб, 317x44
317x44
>>2012371
Вкатиться за семь дней без смс?
Аноним 29/04/21 Чтв 08:46:13 2012374304
>>2012372
Почему не активна для блока кода?
Аноним 29/04/21 Чтв 08:54:20 2012377305
wdo1500.jpg 16Кб, 500x327
500x327
>>2012374
Потому что в питоне нет блочных каментов?
Аноним 29/04/21 Чтв 16:08:17 2012830306
Есть некоторая функция loads(data: bytes) -> Union[dict, list, bytes, int],
которая парсит некоторый формат данных и возвращает питонячий объект. Объект может быть словарем/списком/байтовой строкой/целым.

Так же есть еще один метод read_data(self) -> dict: return loads(self._raw_data), который парсит данные функцией loads, точно зная что вернется словарь, а не что-то другое. Но на "-> dict" mypy ругается:
error: Incompatible return value type (got "Union[Dict[Any, Any], List[Any], bytes, int]", expected "Dict[Any, Any]")

Если у метода read_data поменять возвращаймый тип на Union[dict, list, bytes, int], то ошибки посыпятся уже в другом месте. Например при обращении к методу __getitem__, т.к у интов его очевидно нет.

Как в таких случаях раставлять анотации типов? М.б можно как-то явно указать mypy что конкретно в этом месте вернется словарь?
Аноним 29/04/21 Чтв 17:10:14 2012888307
Сап

Есть json списочек
Кодю json[1] - получаю информацию, все заебись

В этом json списке сто элементов, у 20 из них одинаковое поле Id

Как мне получить все элементы у которых одинаковое поле id из целого json списка?
Аноним 29/04/21 Чтв 17:15:44 2012892308
>>2012830
Хороший вопрос, самому стало интересно
Наверное это хуевая функция если она умеет возвращать столько разных типов,
Если не ошибаюсь, в компилируемых языках можно указать один возвращаемый тип или интерфейс, и в каком нибудь c# нужно было бы написать разные конструкторы для разного типа данных, и вернуть разных наследников класса с функцией read_data.
Наверное тебе нужен класс-фабрика который возвращает объект с уэе распарсенными данными
Аноним 29/04/21 Чтв 17:21:56 2012895309
>>2012888
Ты можешь например отсортировать списочек
sorted(json, key=lambda x: x['id'])
а потом groupby из модуля itertools сгрупировать с таким же ключом
и там уже можно итерироваться по групам
Аноним 29/04/21 Чтв 17:30:29 2012900310
>>2012830
Попробуй как-то так поиграться:
from typing import cast
from typing import Match
.
.
.
def read_data(self):
return cast(Match[dict], loads(self._raw_data))
Аноним 29/04/21 Чтв 17:36:49 2012912311
>>2012900
> def read_data(self): -> dict
fxd.
Аноним 29/04/21 Чтв 18:19:42 2012968312
Есть список A, который пополняется в цикле.
Я могу этот список засунуть как значение в словарь, например:
dict1['1'] = A ?

Подозреваю, что тут что-то не то, поскольку у меня у значение добавляется в виде пустого списка.
{"1": []}

Что за херня?
Аноним 29/04/21 Чтв 18:24:00 2012974313
>>2012968
Ах, лень тебе рассказывать ссылочную модель...
Ты добавляешь в словарь ссылку на список. Потом ты этот список очищаешь в цикле, угадал? Получаешь, что значение словаря ссылается на пустой список.
Аноним 29/04/21 Чтв 18:26:34 2012977314
>>2012974
>Потом ты этот список очищаешь в цикле, угадал
Ванга, залогинься.
В общем, где я прорукожопил инб4 при рождении и как всё-таки этот список добавить в словарь?
Аноним 29/04/21 Чтв 18:28:55 2012981315
>>2012977
Попробуй D[x] = [i for i in A] в конце каждой итерации.
Аноним 29/04/21 Чтв 18:29:42 2012983316
>>2012977
Если хочешь чтоб лист остался в дикте отдельным объектом делай
dict1['1'] = A.copy()
Аноним 29/04/21 Чтв 18:34:57 2012991317
Аноним 29/04/21 Чтв 19:41:30 2013081318
Аноны, сложно рандому с улицы изучить Data Science? Заебали уже чуть ли не с каждой дыры об этом говорить. Цены на курсы пиздецовые, зато потом лохам обещают золотые горы.

И, как я понимаю, Data Science это и аналитика данных и машинное обучение? или нет?
Аноним 29/04/21 Чтв 19:50:49 2013087319
>>2013081
Это в первую очередь математика: линейная алгебра, мат. анализ, мат. статистика
Если с этим у тебя заебись, то изи
Аноним 29/04/21 Чтв 19:52:45 2013088320
Уважаемый анон, как мне отсортировать по product_price структуру такого вида:
[
Product(product_name='n1', product_price='14.88'),
Product(product_name='n2', product_price='19.08',
Product(product_name='n3', product_price='9.11')
]


Не могу понять, как достучаться до свойства product_price.
Аноним 29/04/21 Чтв 19:55:35 2013090321
>>2013088
a.sort(key=lambda prod: float(prod.product_price))
Аноним 29/04/21 Чтв 19:59:21 2013097322
>>2013088
sorted(lst, key=lambda x:x.product_price)
Аноним 29/04/21 Чтв 20:13:31 2013118323
>>2013090
>>2013097
Аноны, сорян. Это был класс, унаследованный от NamedTuple и там сортировка осуществляется через
from operator import attrgetter
и дальше
a.sort(key=attrgetter('product_price'))

Так-то прикольно ящитаю.
Аноним 29/04/21 Чтв 20:18:10 2013128324
>>2013118
Однохуйственно абсолютно, что твой вариант что через лямбду
Только ты во float все таки оберни, если у тебя цена в строке, а то проебешься
Аноним 29/04/21 Чтв 20:41:07 2013173325
>>2013128
>>2013118
Если действительно цена, то такие вещи, лучше в Decimal засовывать
Аноним 29/04/21 Чтв 21:23:53 2013218326
Пайтон!
Аноним 29/04/21 Чтв 22:58:38 2013287327
>>2012888
from collections import defaultdict
d = defaultdict(list)
for entry in myjsonlist:
d[entry["id"]].append(entry)
Аноним 30/04/21 Птн 07:43:48 2013536328
Есть какая-то нормальная книжка по Django CMS на великом и могучем РУССКОМ языке? И чтобы не форсила использовать SQLite?
Аноним 30/04/21 Птн 07:48:31 2013537329
Аноним 30/04/21 Птн 08:03:32 2013540330
>>2013537
Для уника нужно веб-сервис написать, а у меня есть опыт с цмсками на пхп. Но когда сказал, что буду писать на пхп мне пальцем у виска покрутили и отправили писать на c# либо пайтоне. На c# у меня опыта 0, а базу пайтона знаю плюс есть опыт работы с фласком не зашло от слова со всем. Вооот, хочу джанго подрочить, узнал что есть CMS и теперь хочу CMS.
Аноним 30/04/21 Птн 08:56:44 2013571331
Есть на дваче тред про докер и дженкинс?
Есть вопрос. Вот я любой образ а докера могу взять, записав его в докерФайл и собрать это в дженкинс?

Задача, сделать контейнер в котором настроить env для юнит тестов питона, собирать его нужно каждый раз через пайплайн или его нужно хостить где-то?
Аноним 30/04/21 Птн 09:35:43 2013603332
Аноним 30/04/21 Птн 10:01:22 2013613333
Аноним 30/04/21 Птн 12:24:36 2013760334
image.png 71Кб, 1282x1056
1282x1056
Анон, мудрый, объясни, как это решить?
Не понимаю, как сделать все начиная с 2 пункта. Я так понял, там должна быть рекурсия и if else? нихуя не понятно, есть вообще примеры на питоне подобного? если кто сможет сделать, могу скинуть 2 сотки на карту.
Пикрил, как сейчас стоят диски и шпиндели, лол

Существует 8 шпинделей, пронумерованых от 8 до 1 слева направо. На каждом шпинделе надеты диски, в количестве, равном соответствующей цифре из ID студента. Все диски имеют разные диаметры. Диаметр диска равен M * 10 + N, где М – номер шпинделя, на котором надет диск, а N – это номер диска на шпинделе, считая сверху вниз.
1. Необходимо визуально изобразить предложенную задачу. Диски на шпинделях сделать случайных цветов. На каждом диске отображать цифру, равную его диаметру. Диаметр диска также показывать его фактическим размером в пикселях.
2. Необходимо вычислить, за какое минимальное количество итераций переместятся все диски на шпиндель номер 1 по следующим правилам:
а) За одну итерацию можно переместить не более одного диска
б) Диски можно класть только с большего на меньший
в) Со шпинделя номер 8 можно перекладывать диски только на шпиндели 7 и 6
г) Со шпинделя номер 1 можно перекладывать диски только на шпиндели номер 2 и 3
д) Со шпинделей от 2 по 7 можно перекладывать диски только на два соседних шпинделя.
Аноним 30/04/21 Птн 12:40:42 2013791335
>>2013760
Похоже на задачу о ханойских башнях. Погугли примеры ее решения, должно помочь.
Аноним 30/04/21 Птн 12:51:28 2013815336
>>2013791
гуглил, но чет везде c++, ничего по питону. это и есть она, но везде 3 столбика, а тут по задаче 8, ебануться
Аноним 30/04/21 Птн 16:56:50 2014069337
>>2013815
Пиздец, это же одна из самых попсовых задачек наравне с сортировками. Сто миллионов статей с любыми языками и вариантами решений.
Аноним 30/04/21 Птн 17:02:52 2014080338
>>2013815
Заходишь на гх, вбиваешь в поиск и фильтр по языку
Аноним 30/04/21 Птн 17:17:57 2014100339
>>2013791
Если я правильно понимаю условие, то нет тут никакой ханойской башни.
>>2013760
>Диски можно класть только с большего на меньший
Правильно ли я понимаю, что можно перекладывать диск, лежащий непосредственно на диске с диаметром x, непосредственно на диск с диаметром y, только если x > y?
Аноним 30/04/21 Птн 17:52:07 2014142340
Суп питонач.
Можешь насоветовать чего-нибудь для быстрого вката в sqlalchemy? На работе используют, я до этого только djangoORM использовал, а сейчас надо бы по быстрому вкатиться.

Может есть какой-нибудь блитц который позволит делать запросы средней сложности, но без глубокого погружения в детали? Т.к. с деталями можно и оф доку читнуть.

Можно на англ, но если на ру будет, то вообще пушка. Спасибо, двач.
Аноним 30/04/21 Птн 20:25:02 2014331341
Аноним 30/04/21 Птн 20:25:36 2014333342
>>2014331
препод назвал это "модифицированной ханойской башней"
Аноним 30/04/21 Птн 20:45:07 2014350343
>>2003913 (OP)
Пасаны, а как работать Selenium-ом с SPA?
Когда пытаюсь найти любой элемент на странице он мне постоянно выдает "no such element", сколько бы времени я ни ждал через time.sleep()

wtf? че делать?
Аноним 30/04/21 Птн 20:48:18 2014352344
>>2014350
Там можно ждать появления конкретного элемента.
Но может ты не все настроил и получил заглушку "пошел нахуй, ботяра".
Но в 90% лучшим решением является не дрочить селениум, а смотреть реквесты и повторять у себя, получая сразу готовые данные от бэка.
Аноним 30/04/21 Птн 20:52:51 2014360345
>>2014352
Мне нужно взаимодействовать с формой, вбивая туда нужные данные, тут только селениум
Аноним 30/04/21 Птн 20:58:28 2014372346
>>2014360
Форма сабмитися на бек или как форма или ажахом.
Аноним 30/04/21 Птн 21:33:36 2014409347
image.png 10Кб, 649x232
649x232
>>2014372
Дело в shadow-root
Нашел пидарский способ с ним взаимодействовать
Аноним 30/04/21 Птн 21:53:14 2014426348
>>2008659
> pyo3
Чем-то существенно отличается от rust-cpython?
Аноним 30/04/21 Птн 22:53:38 2014475349
Прекомпиляция регексов в пайтоне стоит того? Пишут, что интерпретатор их кеширует, но как там в продакшене это оформляют? Вряд ли же в чистом виде рассредотачивают рассредотачивают по коду.
Аноним 30/04/21 Птн 23:31:19 2014502350
>>2014475
Ну ты можешь сам спрофилировать.

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

Но не забывай, что преждевременная оптимизация считается антипаттерном.
Аноним 30/04/21 Птн 23:34:07 2014509351
>>2014409
Ну ты лалка, я же говорю, в любом случае всё сводится к реквесту на бек, смотришь его и повторяешь. Берешь любую дебажную прокси и гоняешь свою форму, там всё будет.
>>2014475
re.py обвзяка доступна в pure-python виде. Там видим, что используется искаробочный же lru_cache с настройкой 512. Вообще нет смысла заморачиваться, если у тебя там пару штук регулярок.
Аноним 30/04/21 Птн 23:42:47 2014524352
Есть несколько телеграмм-каналов. Как заставить бота написать в них в качестве клиента?
(под ботом я имею ввиду любую программу, которая будет эмитировать действия обычного юзера)
Аноним 01/05/21 Суб 00:10:34 2014552353
>>2014502
>>2014509
> Но не забывай, что преждевременная оптимизация считается антипаттерном.
> Вообще нет смысла заморачиваться, если у тебя там пару штук регулярок.

Ну, вот, у меня по профайлингу выходит, что прекомпиляция даёт пусть и маленький с точки зрения задачи скрипта, но всё же прирост в скорости. Антипаттерн, не антипаттерн, но как-то глупо было бы отказываться от этого, нет? И если уж прекомпилировать, то куда это всё по-православному складывать: вверху, там, где константы, или выносить в отдельный класс/модуль?
Аноним 01/05/21 Суб 00:31:02 2014573354
>>2014142
>>2014142
Я щас именно этим занимаюсь
Тупо смотрю видосы на ютубе, смотрю как они делают
сначала там создается движок через create_engine, в него передаем урл к базе данных
потом с этим движком получаем объекты MetaData(в нем накапливаются объекты таблиц) и sessionmaker(он рожает session, грубо говоря это executor у которого есть метод commit)
Модели таблиц создаются через Table, в аргументы ему передаются Column, а ему в аргументы передаются Integer(), Text() или primary_key=True например.
Создать все таблицы физичесуи в бд metadata.create_all()
Можно создать объект запроса например query = table.insert((1, 'dddd')) и передать его в session.execute(), ну а вообще там одно и то же разными способами можно делать
Вот вообщем-то и все
Аноним 01/05/21 Суб 00:35:58 2014575355
Аноним 01/05/21 Суб 00:42:46 2014581356
>>2014575
А если есть еще и вотсап? Отдельную херь и для него? Просто взаимодействовать с произвольными приложениями-мессенджерами не выйдет?
Аноним 01/05/21 Суб 03:58:36 2014632357
Стоит ли переходить на жс для бэкенда или сидеть на жанге?
Аноним 01/05/21 Суб 07:06:56 2014664358
>>2014581
Как ты себе это представляешь?
Можно через селением ебаться с веб-версиями
Аноним 01/05/21 Суб 07:08:13 2014665359
Аноним 01/05/21 Суб 08:30:08 2014690360
>>2003913 (OP)
Сап двач. Я тот анон, что неделю назад начал учить погромирование с нуля.
Услышал что среди тренировок питонистов есть задача на написание симулякра передачи Монти-Холла. Зацените как у меня получилось, норм или нет https://pastebin.com/VUsWEF3r

Теперь надо придумать как автоматизировать основной код и прогнать его пару тысяч раз, если будет 67% значит все верно. А если нет, то зря старался, пять часов его писал. И это моя третья попытка уже.
Аноним 01/05/21 Суб 08:31:32 2014691361
>>2011995
Там все тусуются и деды 55 лвл есть. Но там делать нехер, негатива полно, порнухи и вообще это лютая прокрастинация.
>>2012012
Ну попробую как дойду до алгоритмов в книжке, а то я только только начинаю свой путь
Аноним 01/05/21 Суб 08:57:34 2014700362
Пишу свою первую программу на Python. Суть в следующем: через tesseract считываем с определенного участка на картинке слова. Когда машина видит определенные слова (условно, это слова "хуй", "говно", "моча"), он нажимает на соответствующую кнопку в своем интерфейсе (кнопка 1, кнопка 2, кнопка 3. каждому слову определенная кнопка). Интерфейс написал на pyqt5, через tesseract находить и выводить нужные слова в консоль при их обнаружении научился. Как мне теперь всё это дело связать и забиндить?
Аноним 01/05/21 Суб 09:06:56 2014702363
CcuYraMXIAE5Yn6.jpg 190Кб, 1008x1323
1008x1323
>>2014700
1. связываешь
2. биндишь
задвай более конкретные вопросы, хуесосина, нихуя непонятно в чем именно у тебя в мозгах затык
Аноним 01/05/21 Суб 09:26:36 2014712364
>>2014691
бля. не люблю когда негатив мешают с порнухой
Аноним 01/05/21 Суб 09:56:19 2014727365
>>2014573
Есть результаты тестирования, насколько этот вкат быстрее остальных?
Аноним 01/05/21 Суб 11:35:20 2014828366
Правильно ли я понимаю что параллельное программирование для создания приложений, а асиннхроное для веб и сети?
Аноним 01/05/21 Суб 11:38:48 2014832367
52406445847.jpg 77Кб, 551x700
551x700
Аноним 01/05/21 Суб 11:52:07 2014853368
>>2014828
Хуню спизданул
Ести ты про потоки и async/await то похуй, надо смотреть что в данном случае удобнее, они и вместе используется, а в asyncio есть функция которая запускает данную функцию в отдеоьном потоке


Аноним 01/05/21 Суб 12:04:59 2014877369
Как правильно называть модель базы данных User или Users?
Аноним 01/05/21 Суб 12:17:55 2014892370
Аноним 01/05/21 Суб 15:36:30 2015064371
>>2014828
Нет, не правильно.
Скорее всего ты вообще плохо понимаешь что такое параллельное и что такое асинхронное.
Аноним 01/05/21 Суб 15:43:04 2015078372
>>2014828
Параллельное программирование нужно вычислительных задач и высокопроизводительной работы.

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

То есть параллельность это про вычисление, а треды и асинхронность это про приложения и сервера.
Аноним 01/05/21 Суб 17:00:33 2015173373
image.png 9Кб, 392x171
392x171
как запустить эти две строчки одновременно?
circlevis в цикле отрисовывает кружочек и рандомит ему радиус, а (pyttsx3) speck_engine.runAndwait озвучивает текст через встроенного в винду синтезатор речи. Как сделать так, чтобы circlevis работал во время синтеза речи?
Аноним 01/05/21 Суб 18:17:26 2015348374
>>2015173
первую надо засунуть в отдельный поток
from threading import Thread
Thread(target=func).start()
Аноним 01/05/21 Суб 19:03:08 2015456375
Подскажите как в этом коде https://pastebin.com/yRTHa5kd сделать обработчик ошибки, если сервер не отдал в json prefixes, то этот запрос переотправить?
Аноним 01/05/21 Суб 19:19:34 2015473376
>>2014832
на пике ты? там минихуй или натуральный питон? чет квадратик маловат
Аноним 01/05/21 Суб 20:00:00 2015525377
>>2015456
у r есть метод json()

while True:
r = requests.get...
data = r.json()
prefixes = data["data"].get("prefixes")
if prefixes is not None:
break
Аноним 01/05/21 Суб 20:07:31 2015537378
>>2015525
а он разве запрос повторит при ошибке?
Аноним 01/05/21 Суб 20:10:05 2015539379
>>2015537
чего бы нет? цикл же
Аноним 01/05/21 Суб 20:16:14 2015551380
Аноним 01/05/21 Суб 20:19:44 2015558381
>>2015551
ебать ты неадекват
изначальный get надо в цикл заключить
гумманитарий да?
Аноним 01/05/21 Суб 20:21:55 2015566382
Пацаны можт кто юзал асинхронный движок в sqlalchemy который create_async_engine, его уже можно юзать или еще сырой?
Аноним 01/05/21 Суб 20:23:37 2015567383
>>2015558
я его только 2й день учу
Аноним 01/05/21 Суб 21:54:28 2015772384
>>2015078
И как параллельность и треды с асинхронностью реализованы в питоне?
Аноним 01/05/21 Суб 22:03:59 2015786385
>>2014832
Где искать мужа типа пикрил?
Я грудастая спортивная 1С-программистка, вкусно готовлю, хобби - бдсм.
Аноним 01/05/21 Суб 22:08:55 2015792386
>>2015786
>Я грудастая спортивная
Кидай фотки
Аноним 01/05/21 Суб 22:20:07 2015798387
Аноним 01/05/21 Суб 22:44:39 2015823388
Аноним 01/05/21 Суб 23:55:08 2015886389
>>2015456
Чел, загугли pytest. Твоя стена когда превратится в три строчки с параметрами с пайтестом.
Аноним 02/05/21 Вск 00:50:22 2015915390
Аноним 02/05/21 Вск 08:04:39 2016059391
>>2015886
эээ... пайтест это тестирование, а мне обработка ошибки нужна.
Аноним 02/05/21 Вск 12:11:26 2016196392
>>2007247
Обожаю снг за бесконечный форс антинаучной лабуды.
Просто перечислю вещи о которых ты даже не в курсе:
- понятия интеллекта не имеет под собой биологически объективных обоснований, это что-то уровня души и прочих эфемерных сущностей, в мозги вообще НЕТУ никаких носителей интеллекта
- выводить ум на основе школьных тестов уровня выберите треугольники/линии/кружочки это простейшая манипуляция уровня предсказаний по гороскопам, поэтому я их и сравнил, никакой объективной основы у айкью нету, его результат просто показывает что человек успешно решает тесты на кружочки, а не то как успешно он решает косплексные задачи в жизни

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

И да, на досуге подумай почему люди со средним айкью имеют миллиарды, а ты работаешь обычной макакой у бизнес кабанчика.
Аноним 02/05/21 Вск 15:38:03 2016399393
>>2016196
>- выводить ум на основе школьных тестов уровня выберите треугольники/линии/кружочки это простейшая манипуляция уровня предсказаний по гороскопам, поэтому я их и сравнил, никакой объективной основы у айкью нету, его результат просто показывает что человек успешно решает тесты на кружочки, а не то как успешно он решает косплексные задачи в жизни
Корреляция очень большая. Есть правда проблема, общая со всеми тестами - тесты работают хорошо, пока к ним целенаправленно не готовятся. Если же ты целенаправленно начинаешь задрачиваться на задачки по выборке треугольников по признакам, выучиванию сложных слов и т.п., ты себе добавишь в 10-20 баллов IQ легко, но сильно умнее от этого не станешь. Да, немного прокачаешь свои возможности, но не на 10-20 баллов.

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

Это действительно так. Но, проблема в том, что как только появляется мотив, так сразу можно задрачиваться на тестирование и оно перестаёт адекватно показывать результат.

Сейчас, когда говорят про IQ, всё-таки больше говорят в отрыве от теста. Просто о мыслительных способностях.
Аноним 02/05/21 Вск 15:42:50 2016400394
Аноним 02/05/21 Вск 15:54:59 2016410395
>>2016196
>И да, на досуге подумай почему люди со средним айкью имеют миллиарды, а ты работаешь обычной макакой у бизнес кабанчика.
Если в Раше, то потому, что тут миллиарды у тех, кто в юности вместе с Пыней пиздил по подворотням ботанов всяких. Понятно, что это с интеллектом скорее обратную корреляцию имеет.

Но если ты просто пиздил чмошников, но с Пыней знаком не был, ты миллиардером не стал бы.

Кстати, если посмотришь на миллиардеров первой формации, то вылез сам наверх в бурные времена, а не по дружке с П, то там в основном все хорошо образованные. Березовский был вообще дфмн и профессором-математиком, даже членкорром РАН, но это вероятно уже прикупил, как деньги появились, Ходорковский, Дмитрий Зимин. Павел Дуров вот олимпиадником был.

В США тоже коррелят сильный. Интеллект выше среднего, но и происхождение и умение строить связи важны, конечно. То есть супер интеллектом в плане решения задач ты другие способности за заменишь. Хотя умение выстраивать отношения это тоже интеллект, просто он тестом не изменяется.
Аноним 02/05/21 Вск 16:12:39 2016436396
image.png 97Кб, 236x236
236x236
Месяц на Питоне, объясните дауну, зачем нужны раздельно функции и методы, ведь это кажется тупо неудобным.
Например, есть переменная:

>word = 'hello'

С ней можно сделать, например, подсчет символов:

>len(word)

Или заставить писаться с большой буквы:

>word.upper()

Уже три недели вникаю в ООП, понимаю, что в Питоне word автоматически становится объектом, который усваивает методы класса Str, но все же - кто скажет, кому пришла в голову идея делать так запутанно вместо единого формата, например:

>len(word)
>upper(word)

или

>word.len()
word.upper()

Это какая-то знаменитая пайтоновская логика, упрощающая кодинг? Насколько знаю, в других языках такой путаницы нет (могу ошибаться).
Аноним 02/05/21 Вск 16:24:52 2016458397
>>2016436
>Месяц на Питоне
Скорее всего и месяц в программировании вообще.

Рано тебе ещё лезть в ООП и архитектуру, ты просто не готов пока. Нарабатывай кодерские скиллы. Не лезь пока в ООП, это тебе пока не нужно и ты не готов.

Через год приходи с такими вопросами, если останутся.
Аноним 02/05/21 Вск 16:39:04 2016491398
>>2016436
>Это какая-то знаменитая пайтоновская логика, упрощающая кодинг? Насколько знаю, в других языках такой путаницы нет (могу ошибаться).
Везде есть та или иная путаница.

Вообще, так сложилось.

len() это базовый оператор языка. upper() это специфичный метод. upper(word) однозначно не вариант по понятным причинам, чтобы глобальное пространство имён не портить.

len() так метод вполне себе вариант и даже если копнуть глубже, именно так и есть, для этого есть метод __len__(self), который и возвращает длину объекта, для своего объекта ты можешь его определять.

Но, есть семантическая разница, как и зачем len() используется, есть разные подводные камни с наследованием и т.п.
Аноним 02/05/21 Вск 17:00:42 2016539399
>>2016491
Я правильно понимаю (если упрощенно), что функции (типа len(x), round(x), print(x)) - это как-бы методы некого класса классов, этакий GLOBAL_PYTHON.len(word), написание которого отбрасывается, ибо он автоматически имеет власть над всеми типами данным (которые для него - объекты, его наследующие)?
Аноним 02/05/21 Вск 17:08:24 2016556400
>>2016539
Это не методы, это операторы. Такие же как, например, iоператор f.
Аноним 02/05/21 Вск 17:08:44 2016557401
Аноним 02/05/21 Вск 17:18:17 2016564402
>>2016539
Не очень понял.

Скорее это просто встроенные функции, которые под капотом для нестандартных объектов реализованы так, что они дёргают специальный метод, который должен быть определён. При этом для встроенных типов интерпретатор может работать более оптимально, не дёргая реально эти методы.

Отчасти тут историческое наследие. Плюс это в плане семантики выделение некоторых особых функций в особый статус.

Например ты можешь делать так:
len("world" + "hello")
round(1.1 + 10.6)
- вычислить что-то без получения промежуточного результата. Если бы у тебя было всё через методы сделано, пришлось бы писать
("world" + "hello").len()
(1.1 + 10.6).len()
что как-то не очень стройно.

Аноним 02/05/21 Вск 17:23:48 2016569403
>>2016539
>>2016436
Это не один пример, их дохуя. Сделано это, чтобы не изобретались велосипеды. Хочешь сделать len, имплементь __len__, хочешь сделать итератор - имплементь __iter__ , __next__ и т.д.
Т.е. ты встраиваешь свою нестандартную логику в стандартные возможности языка, которые работают ожидаемо.
Аноним 02/05/21 Вск 17:34:55 2016579404
>>2016569
Суть вопроса анона была в том, почему сделано
len(obj)
а не
obj.len()

Второй вариант тоже вполне допустим был бы. Но так сложилось и так просто в целом удобнее и нагляднее.
Аноним 02/05/21 Вск 17:48:19 2016596405
>>2016579
>а не obj.len()
Ну так есть obj.__len__()
Аноним 02/05/21 Вск 18:11:49 2016611406
>>2016436
умник а upper от листа или от инта что будет делать?
len это общий метод для последовательностей
Аноним 02/05/21 Вск 18:15:44 2016614407
>>2016579
Да вопрос был в целом о закулисном различии между функциями и методом, бросающимся в глаза новичку разницей в синтаксисе:
do(somethig) и something.do()
Энивей, последний актуальный вопрос: если методы - это функции классов, то глобальные фукнции к чему привязаны? Вот как анон говорит >>2016611, something.upper() возможен только для объектов класса Str, тогда как len(something) для объектов разных классов. Что позволяет глобальным функциям вытворять такое? Что они вообще такое, по отношению ко внутренним классам (Str, Int, Dict и т.д.?
Аноним 02/05/21 Вск 19:38:16 2016718408
>>2016614
>если методы - это функции классов, то глобальные фукнции к чему привязаны?
Условно, метод - это просто функция, определённая в области видимости класса и принимающая первым параметром указатель на класс

Ты можешь сделать так
def func(self):
____print('func', self)

class Aaa:
____pass

a = Aaa()
Aaa.func = func
a.func()

и это будет работать так, как если бы ты корректно определил метод для класса

Смысл методов в ООП в том, чтобы очистить пространсво имён в первую очередь.

У классов Aaa и Bbb могут быть методы func, но принципиально разные
поэтому ты не можешь делать
func(a) и func(b), так как функция разная.
а вот a.func() и b.func() очень естественно и понятно.

Впрочем ты можешь определить func как
def func(self):
____self.func()

и потом вызывать func(a) и func(b), и всё будет работать. Можешь аргументы поддержать без проблем, в питоне это просто.

Но, нехорошо, ты портишь глобальное пространство имён.

Глобальные функции не привязаны ни к чему.
Аноним 02/05/21 Вск 19:40:06 2016719409
>>2016611
>умник а upper от листа или от инта что будет делать?
len(5)
тоже выбросит исключение. Не говоря уже о таких специфичных штуках, как round()

Просто len() довольно общая вещь, поэтому определили как стандартную функцию. Чистая условность.
Аноним 02/05/21 Вск 20:14:19 2016750410
>>2016614
> do(somethig) и something.do()

Я из-за этой хуйни на Котлин пересел
Аноним 02/05/21 Вск 22:00:35 2016905411
>>2016719
а в твоей логике длина от целого числа что должна вернуть?
Аноним 02/05/21 Вск 22:13:50 2016919412
>>2016614
глобальные методы лежат в builtins
import builtins

Глобальные функции просто обращаются ко внутренним методам класса, например len() от целого числа возвращает ошибку object of type 'int' has no len() , то бишь он просто не находит определенный внутри класса int метод __len__(self)
Эти функции подаются как преимущество языка, потому что если у тебя есть пользовательский класс, имеющий природу последовательности, тебе не надо думать как программист выдумал определить длину obj.length() или obj.size(), есть просто общий метод len
Аноним 02/05/21 Вск 23:35:15 2017008413
>>2003913 (OP)
В пятницу перед тем как бросить код в ревью назвал там переменные small_dic и big_dic. Как думаете, ревьюверы оценят или назовут меня пидором? Компа под рукой нет, вплоть до вторника менять что-то не выйдет
Аноним 03/05/21 Пнд 06:59:36 2017161414
Аноним 03/05/21 Пнд 08:50:01 2017201415
Аноним 03/05/21 Пнд 09:18:41 2017218416
>>2017008
Поймут что у тебя плохо с английским и не возьмут.
Аноним 03/05/21 Пнд 09:22:10 2017222417
Аноним 03/05/21 Пнд 09:32:47 2017230418
>>2017218
Очевидно же что это сокращение от dictionary.
Но тот анон все равно пидор.
Аноним 03/05/21 Пнд 11:34:14 2017363419
>>2017230
Очевидное сокращение от dictionary - dict. А у него залупа петросянская.
Аноним 03/05/21 Пнд 11:57:39 2017386420
>>2017008
Код - это самое последнее место для твоего петросянства, не говоря уж про то, что сама идея назвать две переменные по непонятному "размеру", а не по функциональному назначению, уже и так почти наверняка является хуевой практикой именования с твоей стороны.
Аноним 03/05/21 Пнд 15:13:36 2017564421
photo2019-03-15[...].jpg 90Кб, 900x672
900x672
Аноны, а как хранить пароли в питухоне?
Ну вон есть условные коннект к бд, не клиртекстом же.
Аноним 03/05/21 Пнд 15:43:03 2017590422
>>2017564
В первом приближении просто в конфиге открытым текстом. Как и некоторые другие параметры подключения.

Дальше вопрос всей твоей инфраструктуры, где и каким образом конфиг хранить.
Аноним 03/05/21 Пнд 17:54:26 2017719423
>>2017564
пароль к бд? в коде пароль нужно получать из переменных окружения
os.environ()
а хранить у себя в keepass
Аноним 03/05/21 Пнд 21:04:56 2017968424
Сап, не до конца знаю, корректно ли писать в этот тред по поводу работы с БД в django, но...
В БД имеется таблица, в которой нет ключевого поля, но есть поле, которое задано внешним ключом по ключевому полю другой таблицы.
По итогу при попытке в models.py прописать что-то вроде
field = models.ForeignKey(Table, to_field="fieldid", db_column="fieldId", default=None, on_delete=models.CASCADE)
при попытке сделать миграции django выдает предупреждение о том, что пытаюсь добавить non-nullable id без дефолтного значения, хотя оно прописано. Где я накосячил?
Аноним 03/05/21 Пнд 21:16:55 2017992425
>>2017719
>а хранить у себя в keepass
В смысле?
Аноним 03/05/21 Пнд 21:28:27 2018012426
image.png 81Кб, 1614x587
1614x587
Подскажите, а как спарсить этот bonjour с сайта https://context.reverso.net/translation/english-french/hello

Пробовал взять em с классом "translation" но оно суп не парсит. Может можно просто этот текст спарсить?
Аноним 03/05/21 Пнд 21:36:50 2018022427
image.png 5Кб, 830x159
830x159
>>2003913 (OP)
Обосрался с кодом на leetcode, мне он выдал вот такое
Что там может использоваться что действительно проверяет обозначенные типы и возбуждает соответствующие исключения из-за этого?
Аноним 03/05/21 Пнд 22:02:59 2018058428
>>2018012
разобрался. надо было просто get_text() делать
Аноним 03/05/21 Пнд 22:09:10 2018069429
>>2018022
integer[] уже намекае, что это какая-то хуйня.
Не тот язык выбран?
Аноним 03/05/21 Пнд 22:23:17 2018094430
>>2018069
TypeError же але
они изначально ориентировались везде на Жабу вот такое и пишет, не надо обращать внимание на эту хуйню
Аноним 04/05/21 Втр 00:12:20 2018241431
Посоны, а как наименее безболезненно мигрировать с Джанги 2 на 3?
Аноним 04/05/21 Втр 07:10:42 2018514432
С помощью питона генерирую команду для ffmpeg. Потому что я не умею в batch. Высчитывается нужный битрейт для всех видео в заданной папке, чтобы на выходе получить 8мб видео (для дискорда). Всё это делается через for video in videos_list.
Вопрос: как эту команду выполнить? Через os.system что-то не завелось. Причём схема такая: выполняется команда, ожидается завершение, запускается команда для следующего видео.
Причём генерируемый строковый объект состоит из двух строчек: сначала идёт chcp 1251, чтобы кирилица работала, а затем уже строчка для ffmpeg.
Код не кину, ибо не дома.
Аноним 04/05/21 Втр 09:12:52 2018588433
Подключаюсь к локальной postgras sql в докер кидает ошибку что мой локалхост не принимает 5332 порт.
Хотя все открывается в sql клиенте на том же порте. В чем может быть дело?
Зашёл в контейнер проверить че там в кофеине - все принимается стоит *.
Аноним 04/05/21 Втр 09:56:58 2018615434
>>2018514
В линухе делал через subprocess. В винде наверно так же.
Аноним 04/05/21 Втр 11:46:25 2018753435
Аноним 04/05/21 Втр 13:24:30 2018869436
>>2018588
Правильно ли я понимаю, что твоё приложение крутится в докер-контейнере?

Проблема в том, что внутри твоего докер-контейнера локалхост это именно сеть внутри контейнера, а не на хост-машине. Ты не можешь так достучаться наружу.
Аноним 04/05/21 Втр 14:24:51 2018942437
>>2018241
В чем боль? 3 джанга вроде чисто условно получила эту версию, изменений для мажорной версии там нет
Аноним 04/05/21 Втр 16:41:25 2019172438
df.png 5Кб, 500x258
500x258
Есть тут гуру Pandas?
У меня есть словарь вида:
{some_group1: [{a: 1, b:4, c: 5}, {a:9, b:0, c:4}, ...], ..., some_groupN : [{a: 3, b:7, c: 0}, {a:8, b:2, c:6}, ...]}
Мне надо получить такой датафрейм как на пикрилейтеде.
Как это сделать? Пробовал через pd.concat({k: pd.DataFrame.from_dict(v) for k, v in df.items()}, axis=0), но выгляит как-то не так. Some_group общей должно быть колонкой, а не индексом.
Аноним 04/05/21 Втр 17:25:57 2019226439
БЛЯ ПИЗДЕЦ

Есть простая цель: скачать пдф по ссылки, отправить этот пдф в гугл клауд на извлечение текста, повторить это много много раз.

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

Похуй, стал искать библиотеки, которым можно обрезать количество страниц в ПДФ. И с какого то хуя каждая блядь библиотека ожидает, что я буду передавать ПДФ как путь к файлу, а у меня уже ёбанный ПДФ загружен в память, я его блядь скачал.

Окей, нашёл PyMuPDF, он принимает на вход пдфку из памяти. Но ккогда я удаляю эти лишние страницы, а после этого хочу обратно выгрузить ПДФ в память для некоторых ПДФ я получаю ёбанные ошибки, типо:
RuntimeError: only Gray, RGB, and CMYK colorspaces supported
или
pdf device does not support substitute fonts

Вот хули ему надо бля? Его дело просто убрать лишние страницы и вернуть всё остальное. ХУли он выёбывается то?
Пробовал метод document.scrub(redact_images=2), который должен удалять чувствительные данные, в том числе ебучие изображения, но нихуя. Он как ругался на недопустимое цветовое пространство, так и ругается.

Собственно, вопрос: можно ли как то PyMuPDF жрать все пдфки?
Если нет, есть ли какая то библиотека, которая гарантированно жрёт любое пдф, при чём загружать в неё пдф можно из памяти, а не из диска?
Аноним 04/05/21 Втр 17:28:10 2019229440
>>2019172
такое разве вообще можно делать в pd?
Создавай отдельную колонку, в которой будет записано значение группы для каждой строки
Аноним 04/05/21 Втр 18:07:46 2019300441
Можно ли сделать groupby датафрейма без всяких аггрегаций и примерения прочих функций?
Просто сгруппировать по значению одной из колонок? Без всякий count(), sum(), mean(), apply() и прочих вещей?
Аноним 04/05/21 Втр 18:33:05 2019357442
Аноним 04/05/21 Втр 18:40:37 2019359443
>>2019226
Так извлекай текст прямо в PyMuPDF, хуле ты мозга ебешь?
Или тебе надо текст из встроенного в PDF изображения распознавать?
Аноним 04/05/21 Втр 19:04:38 2019386444
>>2019359
да хуй знает, мне кажется гугл клауд по лучше текст из пдф извлекает, не?
Аноним 04/05/21 Втр 19:19:22 2019400445
>>2019386
Текст это просто набор ASCII ну или там UTF8 кодов, как его можно извлекать лучше?
Аноним 04/05/21 Втр 19:29:32 2019405446
>>2019400
Пдф это очень ебливый формат в плане извлечения информации, оно там не чистым текстом и не особо структурировано.
Аноним 04/05/21 Втр 19:44:54 2019420447
14996312975020.webm 1511Кб, 480x384, 00:00:27
480x384
Аноним 04/05/21 Втр 20:21:50 2019442448
>>2018588
Разобрался. ДБ пишет в консоли один порт а на деле докер присватает другой.
Аноним 04/05/21 Втр 20:39:55 2019467449
Есть шаблон заказ-наряда для СТО
Нужно чтобы питон сам подставлял нужные значения и печатал в PDF
Как это можно реализовать?
(Желательно чтобы состыковать с Qt)
Аноним 04/05/21 Втр 21:36:56 2019520450
>>2019467
Upd: догадался делать в QTextEdit, вроде отчет делается, но как добавить там свой текст?
Либо как править html код из питона?
Аноним 04/05/21 Втр 21:58:55 2019536451
>Вот, пожалуйста, та же самая программа, но переработанная под язык Python: http://composingprograms.com/ (нужно знать ангельский или уметь пользоваться переводчиком)

Аноны, есть ли это в пдф?
Аноним 04/05/21 Втр 22:34:03 2019573452
>>2019467
>Есть шаблон заказ-наряда для СТО
>
В каком формате есть то?
>>2019520
html это тупо текст же
Можно тем же beautiful soup править
Аноним 04/05/21 Втр 22:55:36 2019613453
Снимок.PNG 25Кб, 1265x292
1265x292
Я могу прикинуть план как получить df3 в sql, но не знаю как с помощью пандас, хелп.

Типо сначала union по первым трём. Потом лефтджоиним по этим трём сначала с df1 -> получаем таблицу из 4-х колонок добавлением color. Лефтджоиним с df2 опять же по первым трём полям-> получаем искомое. правда там Null'ы будут, и хотелось бы без них тоже, но ето не критично
Аноним 04/05/21 Втр 22:59:42 2019622454
изображение.png 243Кб, 1920x1080
1920x1080
>>2019573
Pdf, doc

Как такое править то?
Аноним 04/05/21 Втр 23:08:10 2019648455
Screenshot2021-[...].png 19Кб, 1017x151
1017x151
Как пофиксить
ModuleNotFoundError: No module named 'rss_reader.parser'; 'rss_reader' is not a package
Пробовал импортировать разными способами,но у меня ничего не получилось
Аноним 04/05/21 Втр 23:16:04 2019660456
>>2019648
ты его установил хоть?
проверь через pip list
Аноним 04/05/21 Втр 23:22:46 2019669457
>>2019660
Да, всё установленно. Импортировать нужно в rss_reader.py и видимо возникает какой-то конфликт из-за того что имя модуля и имя пакета совпадает
Аноним 04/05/21 Втр 23:37:24 2019697458
>>2019669
Ну переименуй свой rss_reader ёпт
Аноним 04/05/21 Втр 23:42:07 2019703459
>>2019697
Проблема в том что нельзя переименовывать, иначе не проходит чек в пулл реквесте.

Еще прикол в том что если в setup.py добавить консольный скрипт, то через него еррор на импорт rss_reader. не выскакивает, а при дефолтном вызове да. Тоже самое только наоборот если просто импортировать parser и feed (без rss_reader.)
Аноним 04/05/21 Втр 23:51:53 2019714460
>>2019703
ifmain есть?
а то мало ли....
Аноним 04/05/21 Втр 23:53:05 2019716461
Анончики, помогите плз ньюфагу. Работаю с модулем argparse. Проблема заключается в том, что метод add_argument удаляет из вводимого через командную строку аргумента символ ^.
Вот, скажем, ввожу в командной строке следующее:
python module_name 2^2
Получаю (через вывод parse_args()):
Namespace(argument='22').
Как пофиксить?
Аноним 04/05/21 Втр 23:54:44 2019721462
Аноним 04/05/21 Втр 23:58:05 2019728463
>>2019703
Во втором случае там проблема именнно с импортом parser, так как в дефолтной библиотеке есть такой модуль. Можно как-то заставить питона юзать мой parser, а не из дефолтной библы? Или тут проще его как-то по другому назвать и не ебаться?
Аноним 05/05/21 Срд 00:05:07 2019734464
>>2019728
Зачем вообще придумывать костыли, если есть возможность переименовать?
Аноним 05/05/21 Срд 00:08:59 2019741465
>>2019648
тьфу бл, ты импортируй то rss_reader
Аноним 05/05/21 Срд 00:10:13 2019743466
>>2019741
именно сам модуль, без .parser, .feed
и потом уже бери что тебе нужно
Аноним 05/05/21 Срд 00:14:45 2019746467
>>2019741
AttributeError: module 'rss_reader' has no attribute 'parser'
Аноним 05/05/21 Срд 00:41:07 2019766468
Всем привет. Подскажите новенькому.
Собрал докер образ через Дженкинс то есть элементарный пайтон система с пакетами. Собралась спустя 5 минут.
Вопрос. Могу ли я использовать эту Джобу каким-то образом сейчас чтобы запустить на ней Питон скрипт?
Или нужно этот Билд где-то хостить типа докерхаба?
Аноним 05/05/21 Срд 01:12:55 2019782469
>>2019766
Докерхаб нужен для хранения образов, а не для их запуска.

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

через команду вроде
docker run -it my_python_image

Запустить скрипт внутри контейнера сложнее, потому что сначала надо его расшарить внутри контейнера

docker run -it --rm -v $(pwd)/my_app:/app python:3.9 python3 /app/app.py

пример команды, если у тебя приложение лежит в папке my_app, а называется app.py

Это в линуксе, в винде вместо $(pwd)/my_app
надо будет полный путь к папке указать.

На самом деле не понятно, зачем тебе докер для этого, в чём то проще его установить в систему и пользоваться virtualenvs, если тебе надо опыты ставить с разными пакетами. В винде питон работает довольно хорошо.

Потому что иначе сначала надо более-менее нормально с докером разобраться, а на это время надо.
Аноним 05/05/21 Срд 01:43:06 2019792470
>>2019782
Спасибо.
Мне нужно чтоюы все в команде могли запускать мои тесты. Для этого я собираю Дженкинсон образ/билд через Пайплайн.
Сейчас он показывает что все собралось успешно на дженкинсе.
Вопрос, могу ли я как-то сейчас использовать этот билд для питон скриптов которые тоже находятся в репо уже?
Я понимаю что если бы у меня был докерхаб я бы туда положил собранный образ/Билд и потом тесты бы просто запускал используя агент Докер.
Но можно ли как то это сделать без Хаба а чисто в дженкинсе? Может модно как-то тригирнуть тесты чтобы они бегали по этому образу который уже был собран в дженкинсе?
Аноним 05/05/21 Срд 08:52:56 2019885471
>>> x = [1,2,3,4,5]
>>> a = [9,8,7,6,5]
>>> a[:] = [x[:2], x[2]]
>>> a
[[1, 2], 3]

как в одну строку сделать так, чтобы выходило [1,2,3]?
Аноним 05/05/21 Срд 09:41:50 2019906472
Аноним 05/05/21 Срд 09:58:17 2019916473
Аноним 05/05/21 Срд 10:10:20 2019932474
>>2019916
ну так и надо, учитывая что я вопрос не совсем верно задал
я вообще со строками работал где это плюсование не делает дел
дошло очевидное, нужно убрать [:] из a[:] = x[:2] + x[2:]
Аноним 05/05/21 Срд 10:13:10 2019935475
>>2019932
эта [:] штука позволяет не делать новые копии списка в памяти (в питоне переменные отсылают к значениям), потому я ей теперь пользуюсь
Аноним 05/05/21 Срд 13:08:27 2020229476
Аноним 05/05/21 Срд 13:13:58 2020232477
>>2019935
[:] позволяет перезаписать объект, а не создавать новый.

Разница принципиальна, когда у тебя несколько ссылок на объект, например у тебя твой список в каком-нибудь классе хранится или в другом объекте. Либо когда ты передаёшь его в качестве аргумента в функцию.

def foo(arr):
____arr = [1,2,3]
и
def foo(arr):
____arr[:] = [1,2,3]

могут работать принципиально по-разному. В общем тут это главное, а что там память выделяется или не выделяется это ерунда полная и не надо об этом думать. Скорее всего у тебя в любом случае какой-то промежуточный список создаётся и под него выделяется память.
Аноним 05/05/21 Срд 13:59:41 2020272478
>>2019703
Переименовать свой пакет
Переименовать скачанный пакет в site-packages
Перетащить нужный код к себе проект в пакет с другим именем
Поменять приоритет путей в sys.path чтоб сначала искал в сторонних либах
Так же можешь попробовать покопаться в родной либе importlib, наверняка там можно соорудить импорт из конкретной папки
Аноним 05/05/21 Срд 14:01:44 2020274479
>>2019716
аргумент в кавычки попобуй заключать в баше
Аноним 05/05/21 Срд 14:48:10 2020351480
Здравствуйте, пытаюсь сделать парсинг нескольких страниц, но у меня ничего не получается.

https://onlinegdb.com/HkHPrZlud

На этапе когда парсил одну страницу было некоторое понимание что делаю, но в какой-то момент мозг просто остановился.
Аноним 05/05/21 Срд 15:13:11 2020393481
>>2020351
А зачем ты нахуевертил это ооп и логи? Там в десяток строчек всё делается. Начни с простого, потом наращивай мяско.
Стандартный подход примерно такой
next = url
while True:
page = get(next)
#парсим
next = ищем ссылку на следующую страницу. Если её нет, то само останавливается.
Аноним 05/05/21 Срд 15:51:43 2020459482
>>2020393
Спасибо, сейчас буду так делать.
Аноним 05/05/21 Срд 16:47:31 2020535483
20210505162242.jpg 6Кб, 574x118
574x118
IMG202105051625[...].jpg 75Кб, 856x222
856x222
Как на питоне сделать данную хуйню? Я заебался уже, не понимаю какой gui выбрать, синтаксис за две недели хуй нормально выучишь, да ещё и препод пока что не разрешает мат. библиотеки использовать. Вообще мы на делфи всё это делаем, но препод на питоне разрешил. Захотелось вкатиться... с переходом потом в научный питон. Помогите аноньчики, лабы уже горят
Аноним 05/05/21 Срд 17:07:03 2020561484
>>2020393
И правда 10 строк получилось, интересно зачем было на ютюб всю эту воду лить.
Аноним 05/05/21 Срд 17:38:49 2020604485
Аноним 05/05/21 Срд 17:42:28 2020612486
>>2020274
С двойными работает, а с одинарными нет.
Спасибо большое.
Есть предложения, в чем причина в двух словах?
Аноним 05/05/21 Срд 17:52:17 2020633487
>>2020604
Нет, все нормально работает, я просто сверхразум.
Аноним 05/05/21 Срд 18:19:25 2020673488
>>2020612
^ это один специальных символов регулярочек, нужно либо экранировать \^ либо явно указывать что это текст с помощью кавычек
Аноним 05/05/21 Срд 19:09:29 2020713489
>>2019746
from rss_parser import parser, feed

parser.Parser()
feed.Feed()
Аноним 05/05/21 Срд 19:10:31 2020715490
>>2019467
короче насмастырил костыли, но в итоге шаблон заполняется
осталось только сделать вывод на печать....
Аноним 05/05/21 Срд 19:23:05 2020730491
rm -rf
Аноним 05/05/21 Срд 20:07:31 2020774492
Пацаны посоветуйте гайд какой-нибудь или книженцию чтоб быстро вкатиться в понимание субд, не язык sql, а именно индексы, отоношения, представления, все такое
Аноним 05/05/21 Срд 20:55:41 2020810493
Screenshot2021-[...].png 3Кб, 312x66
312x66
Screenshot2021-[...].png 9Кб, 818x87
818x87
Screenshot2021-[...].png 4Кб, 331x42
331x42
Собсна есть функция main в которой парсятся аргументы командной строки. Нужно написать для нее юнит-тесты с разными аргументами. Как это сделать?
Аноним 05/05/21 Срд 21:34:10 2020842494
>>2020810
Во-первых можно прям напрямую sys.argv менять, а еще в arg_parse можно тупо list передать заместо sys.argv
Аноним 05/05/21 Срд 21:46:52 2020855495
>>2020842
Уже пытался передавать список, но ничего не получалось. Только сейчас понял что забыл удалить пакет.
Аноним 05/05/21 Срд 21:50:38 2020862496
Аноним 05/05/21 Срд 21:55:36 2020868497
>>2020862
Ну у меня модуль парсера в пакете, который установлен. Я менял код в функции main и в в модуле парсера и получал ошибку parse_args() takes 1 positional argument but 2 were given потому что в версии пакета которая установленна parse_args() принимает один аргумент.
Аноним 05/05/21 Срд 22:05:11 2020878498
Аноним 05/05/21 Срд 22:33:28 2020905499
Аноним 05/05/21 Срд 22:47:40 2020912500
Аноним 06/05/21 Чтв 00:42:37 2021023501
sdsa.png 61Кб, 921x617
921x617
ssad.png 10Кб, 1499x747
1499x747
>>2020774
Как отсортировать список по координате Y? И чтобы не в кашу
Аноним 06/05/21 Чтв 05:35:26 2021104502
Аноним 24/05/21 Пнд 23:29:03 2041858503
Аноним 31/05/21 Пнд 00:36:36 2050047504
>>2003913 (OP)
Чуть больше месяца учу питон. Дошел до главы про API. Думал смогу написать скрипт для выкачивания музыки со страницы ВК. Загуглил скрипты, оказалось нет, для меня слишком рано. Но из за любопытства скачал один скрипт с гитхаба. Так вот очевидно скрипт просит авторизацию на страничку (без авторизации пользователя ведь нельзя обращаться к данным в ВК, верно?)
Вообщем авторизировался, скачал музло скриптом. Через несколько минут пришло письмо, что кто то авторизировался на страницу через Firefox, хотя у меня Chrome.
Я еще нуб в этом деле и не догоняю до конца, может быть это просто ВК распознал мою авторизацию через скрипт как авторизацию через Firefox, или скрипт все таки отправил мой логин и пароль тому автору?
Может кто шарит зачекать данный код и сказать есть ли там подстава? https://github.com/dvjdjvu/vkMusicDownloader/blob/master/src/main.py
Настройки X
Ответить в тред X
15000
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов