Как правильно погуглить, чтоб понять, как можно постоянно перезаписывать текстовый файл, записывая туда только новый уникальный текст, игноря уже записанный и дубликаты?
Объясните, пожалуйста, простыми словами, что здесь описывается. А то я Python знаю только на уровне кодакадеми и там такого не было. Или скажите, что гуглить.
Залётный ньюфаг-свитор рапортует. Перекатываю неспеша свой зоопарк скриптов на питон. Вопрос — на какой фреймворк обратить внимание, чтобы можно было прикручивать легковесные вебморды с формами-табличками-графиками. Желательно, чтоб выглядело не как говно. Пока смотрю на flask, но может я чего пропустил. Да, я понимаю, что мне в /веб/, но они там хостингами меряются, да цмсы разворачивают. К тому же меня читабельность кода интересует в первую очередь, поэтому сюда написал.
>>561808 У тестов есть методы setUp и tearDown которые вызываются на прогон каждого из тестов (перед и после соответственно). Если на каждый прям тест что-то запускать и настраивать оче накладно, это можно сделать один раз для всего класса, setUpClass, tearDownClass.
>>561827 Напиши пустой класс с 2-3 пустыми тестами. Сделай методы setUp, tearDown, setUpClass, tearDownClass, в каждом из них print('имя метода'), всё сразу поймёшь.
>>561830 Всё равно нихуя не понял. У меня каждый раз открывается новое окно FF. Или это означает, что оно 1 раз инициализирует драйвер и переменные в классе SetUpClass и после этого уже юзает их во всех тестах?
Как мне правильно сделать сравнение класса в isinstance, чтобы оно работало при любом из: import collections from collections import звёздочка import collections as ASDASD
И поменяв лишь класс, из которого наследую (collections.OrderedDict, OrderedDict, ASDASD.OrderedDict), метод оставался рабочим? Есть возможность через суперкласс как-то достучаться до его неймспейса и оттуда уже напрямую брать 'defaultdict' всегда?
>>561915 Нет, идея была в том, чтобы кто-то другой мог это мой класс скопировать себе в скрипт (а как ему там взбредёт в голову модуль импортировать я не знаю) и ему не пришлось копаться и изменять кучу кода, а лишь наследование исправить.
Конечно, модули импортируются лишь один раз, и я могу добавить свой import прямо в класс, но это как-то не интересно.
>>561926 И чего это изменит-то? Меня не OrderedDict волнует же, а defaultdict, который находится в том же модуле, что и OrderedDict, от которого класс наследует, и как к нему универсально обратиться без самоличного импортирования модуля я не знаю.
>>561927 >Пусть сами импорты переносят. Ну это, конечно, разумно, просто думал, что может есть какой способ сделать совсем уж обобщённо.
>>561933 Ну вон же я тебе написал как. Импортировать уже надо твой модуль. Про defaultdict никто даже и знать не будет. OrderedDict это агрумент как бы, и он может быть любой.
Анон, смотри. У меня цикл, где нескольким кнопкам биндятся функции. В аргументах функции нужно передать номер кнопки. Но! Бинд такое дерьмецо, что все аргументы функции передаются при клике по кнопке, т.е. тогда, когда цикл уже завершен. Как в цикле передать биндимой функции текущий номер кнопки?
>>561951 Что за библиотеку ты используешь то? В pygtk можно передавать доп аргументы когда вешаешь функцию. Попробуй from functools import partial button.bind(partial(your_func, keyname))
>>561956 А что ты имеешь ввиду под кнопкой? Клавишу на клавиатуре или кнопку на окне? Anyway вот несколько вариантов: 1) partial 2) что-то типа button.bind("<Button-1>", lambda event: your_func(event, "button1")) 3) получать в твоей функции номер кнопки или объект по которому ткнули из аргумента event эти данные в нем содержатся.
Нужно реализовать метод Краммера. Для этого надо менять для неизвестной под номер i столбец в матрице под номером i на вектор. Как эту хуйню заебашить?
Пока что только дошел до одной итерации, как сделать для N не могу понять. http://ideone.com/ac2Pfp
>>562153 Спасибо, капитан. Эту ссылку я нашел наверное недели 2 как уже. Однако, если ты присмотришься внимательно эта хуита работает лишь в случае 3x3 и 2x2 системах, у меня же нет ограничений NxN. Поэтому данный быдлокод мне не подходит.
>>562159 Для логарифмов там вообще, по-моему, отдельные наборы инструкций на процессорах имеются, так что простенькой однострочной формулы в сорцах ты не увидишь. А так раскладывают в ряды и считают до нужной точности.
Стыдно задавать такой вопрос, но придется. Изучая библиотеку для взаиможействия с АПИ твиттора, я написал пару скриптов для подписки\отписки\постинга и т.д. Подскажите, пожалуйста, как сделать бота так, чтобы работали несколько аккаунтов параллельно. Для каждого аккаунта свои настройки (задержки, теги, количество подписок и т.д.) И чтобы был единый ГУИ для всего этого дерьма. На Qt или даже веб морда
Просто я тупой и не понимаю как это все структурировать. Вот есть у меня один скрипт, а что с ним делать хз. Написать еще один скрипт, который будет вызывать кучу скриптов с определенными параметрами? Как-то это костыльно. Хотелось бы веб морду, настройки в бд, чтобы все как у людей
Пуссаны, я тут пишу в ПУчарме. Пишу себе пишу, ночь вот уже подкрадывается, кот сопит. Вот почти главу учебника долистал, все усердно переписываю. А в учебнике код типа: mamka= dvach(a = "2", b = "c") Прилежно переписываю. И он мне подчеркивает пробелы, a = "2" вокруг присваивания. И ссылается на пеп8. Это важно? Или мой вопрос не имеет смысла? А вообще пока я писал, то решил что пеп8 авторитетнее учебника, и я буду писать так как велит ИДЛЕ. А Чтобы все это время написания поста небыло потрачено впустую, я его отправлю.
На работе хотят переписать поиск (достаточно тяжелый) на go, типа потому что go быстрый. Я хочу попробовать использовать какой-нибудь поисковый движок из этих https://github.com/rosarior/awesome-django#search но не знаю какой выбрать. Нужен быстрой поиск по моделям без изъебств вроде сементики и пр. Что посоветуете? (На беке python27 и джанга 18)
>>562358 Собственно django-haystack может использовать разные поисковые движки под капотом. ( Solr, Elasticsearch, Whoosh, Xapian, etc.) Какие из них лучше - хороший вопрос, наверное где-то есть статьи которые их сравнивают.
>>562287 Вызывать скрипт один раз, очевидно. >>562310 Любую. Если данных немного, то можно и sqlite, которые в пифоне по дефолту есть. Также рекомендую sqlalchemy, нраится. >>562379 Можно и торнадо коненчо же. Просто если торнадо, то точно web, а с asyncio можно ещё gui делать на PyQt.
>>562409 >Вызывать скрипт один раз, очевидно. У него есть скрипт, выполняющий действие. Это действие нужно повторить на нескольких аккаунтах. Как тут обойтись без вызова скрипта несколько раз-то? (Надеюсь под "запуском скриптов" мы оба понимаем именно выполнение написанного там кода, а не буквально запуск .ру файла, который действительно может быть один?)
>Надеюсь под "запуском скриптов" мы оба понимаем именно выполнение написанного там кода, а не буквально запуск .ру файла, который действительно может быть один
Именно наоборот. Вызов скрипта - это как раз запуск .py файла , всё остальное - вызываются функции, инициализируются классы, выполняются методы.
>>562409 >Вызывать скрипт один раз, очевидно. Эм. Ты называешь скриптом файл или содержимое файла? Вообще можно тупо сделать словарь с данными акков и распараллелить внутри твоего скрипта чтобы создавал новый тред под новую пару логин/пароль.
Анон, у меня, наверно, крайне глупый вопрос: как на сервере найти виртуальное окружение? В каких конфах я могу найти намёки на его локацию или есть ещё какие-то способы? Прошлые говнокодеры развели тут помойку: симлинки какие-то сраные везде, охуеть вообще. Системно стоит допотопная 2.4, приложение работает на 2.7-его исполняемый файл и pip2.7 я уже нашёл. Приложение крутиться на Wsgi, Nginx.
>>562449 > Написать еще один скрипт, который будет вызывать кучу скриптов и > Вызывать скрипт один раз Совершенно разное. >>562479 Именно запуск .py файла. Не знаю откуда у кого-то может возникнуть ассоциация «скрипт» → «часть кода». Вот, допустим, был у тебя код в файле, ты его назвал «скрипт», потом добавил туда код из другого файла, который тоже «скрипт» и что, у тебя теперь два «скрипта» в одном файле? Бред же. >>562547 Скрипт — это файл, точно вам говорю, посоны. >>562505 С таким подходом вообще всё, что написано на пифоне, выполняется при «запуске файла». Изначально я намекал лишь на то, что запускать много инстансов пифона aka «скрипт, который будет вызывать кучу скриптов» архаично.
Как почувствовать себя эффективным девелопером , когда ты лишь неделю как первый хеловорулд написал? Мой рецепт прост! Купи себе маркер, и делай рабочие записки по своему ПРОЕКТУ на прозрачной доске(как в рекламе). У меня доски нет, но есть окно, и на нем я буду карябать свои ИДЕИ на псевдокоде. А вы все быдло!
>>562811 >Скрипт — это файл, точно вам говорю, посоны. Мне кажется, ты путаешь причину со следствием. Скрипт - это программа, обычно состоящая из одного файла, который, как следствие, так же называют скриптом. Но это не значит, что скрипт должен состоять из одного файла.
Кстати, новый асинхронный синтаксис в 3.5 предложили чуваки из одной конторы. Они там какую-то йоба-БД пилят http://edgedb.com/ Вроде как она собирается убить и примитивный NoSQL, и реляционные базы.
>>562814 Я в конце дня стараюсь написать пост в жж. Что сделал, что не сделал и почему. И теги: хорошо, плохо. Соответственно: сделал всё намеченное и не сделал ничего. Само собой все записи скрыты.
>>562850 У тебя дневник скорее, в которм ты отслеживаешь свою ификтивность, а я просто вместо тетрадки для заметок на стекле пишу. Хотя дневник надо бы завести,
>>562851 Этот дневник для меня, а не для кого-то, чтобы потом прочитали. Два тега, для того что бы потом сделать анализ, какой день прошел хорошо, всё в этот день сделано, почему, и какой день плохо, почему.
>>563004 У меня таблицы: сообщения, "страница" и "предок-потомок". В таблице "предок-потомок" одноименные поля. Таб. сообщения связаны по ключу с предком-потомком. И таб. страницы и связаны по ключу с предком потомком. В эти поля предок-потомок я хочу записывать комменты.
После request.method == 'POST' в view.py, я сохраняю в таблицу 'сообшения' пришедшееи хочу после сохранения в model.py объявить глобальной переменной и прописать её в RequestContext и шаблон чтобы вставить в data-id="глобальную переменную которая будет равна id в таб. сообщения".
Эта же функция опять принимает post с комментом если data-id (найду на странице на что ответ и отправлю его если он есть) не none, то там id и это потомок в табл. "предки-потомки".
>>562955 Решил вопрос переключением между окнами, так как ссылка имела target = _blank, что открывало её в новом окне. Всем похуй, но мне приятно, что я разобрался.
>>563020 Молодец, рад что ты разобрался. Правда, я не имею ни малейшего представления о том, что ты вообще делал. Но это только увеличивает ценность твоего достижения. Поздравляю.
>>563019 То есть ты во вью её используешь? Почему не сделать просто if request.method == 'POST': ..m = Message() ..m.save() ..return render_to_response('temlate.html', context={data:m.id})
Вообще ты меня запутал. Покажи пример кода. Но использовать глобальные перменные нельзя, особенно в джанге. Вообще.
>>563019 Дело хотя бы в том, что когда ты будешь запускать этот свой джанго проект на рабочем сервере типа uwsgi или gunicorn - у тебя будет несколько тредов там. И это глобальная перменная будет между ними общей. И всё сломается.
>>563051 Да. Но только после того, как ты сделал save Из доков: >>> b2 = Blog(name='Cheddar Talk', tagline='Thoughts on cheese.') >>> b2.id # Returns None, because b doesn't have an ID yet. >>> b2.save() >>> b2.id # Returns the ID of your new object.
>>562791 >>562806 >>562802 /usr/local/python/bin/python2.7 - локация исполняемого файла Ошибся, всё крутится на apache+mod_wsgi, ни в одной конфе нет намёков на виртуальное окружение или я не там смотрю. PYTHONPATH не определён, за то вышеуказанный файл python2.7 засунут в другую переменную.
Есть цикл в котором я получаю вектора. С каждым шагом значение вектора пересчитывается. Как мне блять из этого отрисовать график с matplotlib, если получается конструкция [array([[ -1.96046246e+286, 0, 0, 0], [ 5.88000000e+001, 0, 0, 0],[ 5.88000000e+001, 0, 0, 0], [ 5.88000000e+001, 0, 0, 0]])]?
В результате ебаный Pyplot не может в отрисовку.
Выдавая: raise ValueError("x and y can be no greater than 2-D") ValueError: x and y can be no greater than 2-D
Гугление ошибки выдаёт какую-то дичь без решения данной задачи. Ясное дело, что вся проблема в лишних скобках, но как от них избавиться или хотя бы отрисовать значения.
Есть матрица C [[10e-06, 0, 0, 0], [0, 10e-03, 0, 0], [0, 0, 10e-02, 0], [0, 0, 0, -1000]]
Есть матрица G [[0.03, -0.01, 0, 0], [-0.01, 0.02, 0, 1], [0, 0, 0.01, -1], [0, 1, -1, -1]]
Считается общая матрица А А = Cp + G, где p = sqrt(-1)W. Собственно задаешь W получаешь N итераций и матриц соответственно.
Есть вектор Е [2, 0, 0, 0]
Но выражение выглядит в общем виде Ax = Y, где x, y - вектора как я уже говорил.
По сути каждая строка матрицы A это константы при X из уравнений вроде 12x1+ 26x2 + 35x3 + x4 = 100, Y - содержит значения правой части равенства. Нужно найти X. Делается эта хуйня у меня методом Краммера. То есть берется матрица A и в ней в соответствии с индексом X заменяется соответствующий столбец на вектор Y. Потом считается определитель оригинальной матрицы и измененой и делятся друг на друга выходит соответствующий X. Тут всё вроде как заебись.
Но теперь мне эту хуйню надо проверить методом Эйлера и у меня хуёво выходит.
Эйлер для моего случая выглядит как
X(i+1) = Xi + (Y - AXi)h, где A это G*C^-1 матрица, h - шаг, Y - типа как ненулевое значение вектора.
Я хуй его знает. Это что-то рисует, но выходит дичь какая-то и я не знаю правильно или нет.
Есть такая проблема: надо проверить ввод на валидность. Должно быть 3 числа в строке, разделенных пробелами, первое и второе от 1 до 20000, третье от 2 до 37. Как это сделать красиво и правильно? Накатал пик-релейтед, но кажется это гавно.
Делай отдельную функцию input_numbers. Внутри неё while true. Алгоритм применяй уже вне этой функции, к выходному значению.
a, b, c = input_numbers() algo(a, b, c)
Ещё одну функцию делай для проверки и подчистки числа:
def refine_number(nstr, minv, maxv) r = int(nstr.strip()) if not (minv <= r <= maxv): raise ValueError('Не попали в диапазон')
В случае непопадания в диапазон выбрасывай ValueError. Хуйня вместо числа тоже выбросит ValueError, например int('abc').
while True: inp_str = input() try: a, b, c = inp_str.split(' ') # вот здесь ещё тоже может быть экзепшен, так как числа может быть не 3, слови его отдельно a = refine_number(a, 1, 20000) b = refine_number(b, 1, 20000) c = refine_number(c, 2, 37) except ValueError as e: print(e) else: break
Посоны, проясните мне за eggs, wheels и zipimport. Почему яйца устарели, нахуй вообще нужны колёса, почему вместо яиц нельзя просто импортить из зипфайла?
Что за хуйня у вас вместо ООП? Я не шучу, не толщу, мне на самом деле интересно. Все эти __init__(self) дебильные, наследование от object не по умолчанию. Вам самим разве приятно?
>>563439 То в двойке костыль был. Типа old-style oop и new-style oop. Это они так обратную совместимость кода сохраняли. В тройке уже что так, что так - разницы нет, всё new-style.
Нижние подчёркивания указывают на магический метод. В питоне их дохуя разных, не только init, и это позволяет их легко отличать от обычных. То есть init не предназначен для явного непосредственного вызова.
Передача self аргументом позволяет все функции в классе рассматривать как обычные функции, применять к ним декораторы, преобразования. Ни про какие bind this мы не вспоминаем, всё просто работает. Bound method в инстансе это такой карринг этих функций.
>>563445 Ну так ты вызываешь его внутри init потомка. Больше по идее нигде, хотя явно это не запрещается. Антипаттерн это вызов init из других методов класса и напрямую у инстанса.
>>561713 (OP) По совету из Пасты(Священный текст!) я ныряю в питон. Он черный(как на ОПпике), скользкий как тысяча дьяволов. Омут зла. Вот к примеру, трудно заходит глава о регулярных выражениях. Ну, честно сказать, очень тяжко идет. А как у вас с ними?
>>563750 Регулярные выражения одинаковая ебатория во всех языках. Что в яве что в яваскрипте что ещё где. Другое дело, что в питоне дохуя способов вообще избегать регулярки там где не надо. Можно пользоваться всякими split, 'foo' in bar.lower() и прочими конструкциями. Ещё есть библоитеки для генерации человеко-читаемых регулярок. Или готовые парсеры всяких форматов, так что не придется их регулярками парсить. Вот в перле регулярки на каждом шагу и там это правда ад. Так что не переживай, вряд ли тебе много ими придеться пользоваться.
Аноны, в винде нужно узнать статус раздавалки SoftAP или как альтернативу наличие рабочей сети. В какую сторону рыть, чтобы вывести эту инфу через питон? Гугл говорит юзать винапи, но вменяемых доков и примеров так и не нашел, везде сотни строк непонятного кода.
>>563865 Cама функция в WinAPI вроде называется WlanHostedNetworkQueryStatus, но как её использовать в питоне так и не понял. Установил питоновский win32api, но оно такого метода не имеет.
Какой форум(https://www.djangopackages.com/grids/g/forums/) ставить? Самый важный для меня параметр - простота и как следствие - надежность. Чтобы без уязвимостей потенциальных было. И второе, дайте инфу по установке форума(или другого пакета). В выдаче гугла и ютуба одна хуита(или я в глаза долблюсь?). Добра.
Есть список [['R', 10, 'R1', '0', '0'], ['L', 15, 'L1', 0, 2]] Нужен способ, чтобы находить определенные куски. Например ввожу L и он мне выдает ['L', 15, 'L1', 0, 2], словари не подойдут вероятнее всего, потому что таки 'L' может быть дохуя.
>>564186 Ну ебать, напиши мне цикл компактный. Я пока в затруднении сообразить его. Как-то впадлу чекать весь список и потом смотреть первый элемент. Может есть лучше вариант.
Я уже день убил на эту хуйню. Суть проблемы: Решил я поиграться с создание оконных приложений на питоне под шиндовс. Скачал сам питон, PyQt4, и как среду разработки- Pydev вместе с Liclipse. всегда ловлю такой месседж
>>564351 Но по теме-я писал на pygtk в прыщесреде, качал сборочку python+pygtk под винду и всё запускалось под шиндой. Тоже самое с pyqt. Нахуй тебе запускать какие-то pydev в винде?
>>565055 Ну вообще, я правда не программист, просто хобби, так что моё мнение нерелевантно, и книга может быть говном вполне. Хотя мне понравилась. Так что я добавлять не буду.
>>565067 Ну меня никуда не взяли на работу, так что я вполне имею право на эти сентенции, и если программистов будут сжигать, например, я с чистой совестью скажу что я не программист, так что нахуй иди.
Привет питонята, проясните мне следующую фигню. Собссно зачем я учу питон? Ну, то есть, я его учу и мне он доставляет, но куда на нем пиздовать работать и что на нем вообще пилят, я просто не ебу.
>>565103 веб (flask, django) новомодные SDN сети (openstack) девопс и сисадминство научные вычисления (scipy) можно и десктоп-приложения хуярить (pyqt,pyside) игрульки (pygame)
>>565073 Прикольно, но для нубов. Лучше бы для asyncio подобноее зделали. >>565126 Заебал уже со своим gtk. Он явно отсталее pyqt. inb4: define "отсталее"иди нахуй
>>565144 >отсталее Поэтому гтк использует и хром, и файрфокс, и тундерберд, и дефолтные окружения 90% дистров, и небо, и даже Аллах. Отсталее не бывает.
>>565147 > можно и десктоп-приложения хуярить (pygobject) > все основные варианты >>565152 Я не ебу почему их используют вышеназванные приложения, но qt реально заебись сделан.
>>565158 Ну ты только свое сказал, я в ответ только свое. Теперь давай уважать и друг друга и нюфагов и писать все варианты. Мы тут приличные господа жи.
>>565163 Знаю про твой квамаш только по тому что нагуглил пять секунд назад. Питоновский гтк легко тредится и асинкается нативными гткшными способами. Еще есть gbulb, полагаю это альтернатива этому квамашу.
>>565177 Это >>565115 не я писал. > Знаю про твой квамаш > гтк легко тредится и асинкается нативными гткшными способами > gbulb > 7 downloads in the last month > Latest commit 8548711 on 12 Aug Я не пытаюсь обосрать, просто есть то, что развивается. Было бы очень хорошо, если бы gtk шёл в ногу с qt, но, увы, это невозможно.
>>565239 Пользователи сами добавляют задания, поэтому там есть и плохие каты. выбери режим Rank up и сложность будет расти. К тому же тут есть поддержка не только питона, но и кучи других языков, из которых зачастую переводят интересные задания(тоже пользователи). Ну и еще есть более приятный интерфейс. Лучше сам попробуй пройти несколько заданий. Желательно начинать с заданий которые вышли из беты.
>>565376 http://ideone.com/EcH8O4 Он и внутри лупа возвращает True. Посмотри внимательнее на >elif not stack or stack.pop() != b: Что происходит, если в стеке 1 элемент и это последняя итерация цикла?
>>565393 Я не понимаю почему она магическим образом сначала ['('], потом ['(','{'], потом ['('] и []. Если это последняя итерация и осталься один элемент, то он должен вернуть False. Суть скрипта в том чтобы он возвращал тру на правильную расстановку скобок. Например '([)]' и '{]}' должно вернуть False, а '({[]})' True.
>>565534 Ну, раз не хочешь думать, объясню: b = ')' stack = [')'] Выполняется строка elif not stack or stack.pop() != b: первое условие: not stack == False, поэтому переходим ко второму (через дополнительную переменную, чтобы показать мог): x = stack.pop() # x = ")", Но при этом уже stack = [] (x != b) == False (так как x равен b) итого условие ифа не выполнялось, и к строке "return False" не переходим. А так как это была последняя итерация, то идём к коду после цилка — а там лишь return True.
>>565558 Спасибо, теперь я понял почему stack пустым стал, в глаза просто долблюсь. Но мне данный способ вообще не нравится. Вот http://ideone.com/K5nL6J намного понятней.
>>565612 Ну и зачем ты так? Есть много хороших десктопных поделок на питоне, которыми я сам пользуюсь каждый день. Deluge например, самый близкий по гую к пресловутому utorrent. Comix - оче годно для чтения комиксов/манги. Meld - красивый гуевый дифф, в прошлом треде проскакивал не от меня. Все чисто питоновские. Дропбоксовский клиент опять же питон. Гуи ко всяким демонам часто на питоне пишут. Как и мелкие конфигурялки.
Не вижу ничего плохого, короче. Пишут же для десктопа на С#, на жабе и прочих монстрах.
>>565618 Ещё есть известный jabber client gajim. Потом mirage, exaile, pitivi, guake. Ну и всякое говно типа ubuntu software center. Что характерно, весь этот софт на pygtk, на pyqt ни одной поделки не знаю.
>>565633 Но все эти проги открытые, так что даже при старой лицензии на qt их можно было бы с использованием qt писать. И уже давно как можно и закрытые вещи на qt делать вроде как. И да, я знаю что pyqt вроде как платный, но есть же pyside
Анончики, пытаюсь овладеть питоном, но пока все наоборот. Складываю два числа из окон. но СУММЫ не получается. Где я обосрался?
# -- coding: utf-8 --
# Form implementation generated from reading ui file 'gui_math_2+2.ui' # # Created by: PyQt4 UI code generator 4.11.4 # # WARNING! All changes made in this file will be lost!
from PyQt4 import QtCore, QtGui
try: _fromUtf8 = QtCore.QString.fromUtf8 except AttributeError: def _fromUtf8(s): return s
>>565971 Не красивости, а удобности. В 2015, находясь в стандартной(!) библиотеке, иметь такую ужасную документацию. Скорее даже её отсутствие, плюс пещерное api (fg, bg, StringVar что бля?). Создаётся впечатление, что скорее всего tkinter написали по приколу.
>>566051 Нехуй гнать, StringVar это реализация парадигмы Делегат, а доки в инете прочтешь. Радует то что либа изначально для гуя так и не обросла всяким хламом вроде db, xml, потоками, сетью, html чего не скажешь про Qt, GTK и прочих wxWidgets.
Питонач, помоги. Помню где-то год назад пилил на PyQt интерфейс полностью на webview, прикручивал сигналы прямо на хтмл, но уже не помню как там это всё работает. Так вот, можно ли таким макаром намутить моднявый интерфейс с красивыми кнопочками и джаваскриптами или придется довольствоваться только чем-то упрощенным? Вот htmlaudio, помню, точно не работало.
>>566071 Какой, нахуй, делегат? Все цивилизованные фреймворки используют просто метод объекта-виджета. Зачем эта промежуточная сущность? >>566085 Это не документация, а туториалы от Васянов. Почему на https://docs.python.org/3/library/tkinter.html я вижу кучу говна, а не стройное описание всех(!) методов, всех аргументов, всех объектов, всех стейтов? > tkinter-does-not-suck > it's mature Охуенные аргументы на етих itt слайдах. Глядя на них опять убедился, какое же tk говно: название событий строками строковые модификаторы v = StringVar() e = Entry(master, textvariable=v) бгг self.attributes("-topmost", True) СЕВЕР, ЮГ, ЗАПАД, ВОСТОК расставлять виджеты кодом ЗАТО ТРИ МЕНЕДЖЕРА РАСПОЛОЖЕНИЙ Ну, и конечно же, когда захочется что-то сложней хеллоу ворлда, придётся жидко обсираться. Зделай на своём tk окошко автокомплита для инпута, например, или place-holder, или чтобы когда ты тыкаешь в поле таблицы, там появлялся edit виджет и всё это корректно работало. Это говёная поделка, которая, насколько я понял, просто обёртка-транслятор в tcl.
>>566109 > название событий строками в gtk тоже > строковые модификаторы если я правильно понял, то в gtk тоже есть всякие gtk.TextBuffer. а уж всякие деревья/списки через такую жопу делаются Надо всякие TreeStore(str) делать для них в них TreeViewColumn в них всякие CellRendererText и это самый простой случай.
> окошко автокомплита для инпута, например, или place-holder, или чтобы когда ты тыкаешь в поле таблицы, там появлялся edit виджет Но вот это делается легко
>>566211 > в gtk тоже В qt тоже было до недавнего времени, но сейчас шибко приятнее сделано. Я имею ввиду то, что это за строки: "<Button-1>", например. Ну, что это за огрызок?! Зачем эти угловые скобки? Что за 1? Если бы было написано "mouse-left-button-clicked", то всем бы было лучше.
>>566225 Нахуй ты pygtk нам суешь? Он депрекейтед давно уже блять, для гтк в питоне используйте pygobject. Вот блядь, даже на главной pygtk.org пишут >New users wishing to develop Python applications using GTK+ are recommended to use the GObject-Introspection features available in PyGObject. >recommended to use the GObject-Introspection features available in PyGObject. >recommended to use PyGObject. >PyGObject Вы что, читать не умеете? Ну ебаныйврот.
Сто раз уже говорилось Д Е П Р Е К Е Й Т Е Д Е П Р Е К Е Й Т Е Д
>>566238 Уверен что такие посты пишут те же дебилы что в 2015 году агитируют использовать сырой пи3 под который нет библиотек и который по дефолту разве что в arch linux.
>>566321 А вообще - я вынул глаза из жопы и посмотрел на задание - у них там индент кривой. Два вызова say() убежали на один индент вправо. Должно быть так: def say() ..print( say() say()
>>566331 А я про пеп8 в курсе давно, но так и пишу функции в CamelCase. Даже спиздил кусок кода - он в snake_case, и рядом с ним дописываю свой CamelCase. Нихуя не могу с собой поделать.
Чуваки, а какие есть системы сборки для питона? Я вот сейчас листаю, нашел pynt, paver и scons. Что лучше использовать или есть что-то еще лучше? Хочу автоматом при билде на новой машине зависимости подтягивать как минимум.
>>566412 А если я хочу все выкачать на новой машине (с установленным python, pip и virtualenv) и одним скриптом все развернуть и сбилдить? Я в питоне мимокрокодил, просто хочу запилить свою мелкоутилиту так, чтобы потом не было стыдно выложить.
>>566416 Ну ты на новой машине делаешь virtualenv, активируешь его и запускаешь pip install -r requirments.txt оно всё поставит. Можешь это делать из скрипта. Можешь заюзать чето типа http://www.fabfile.org/ чтобы удаленно это автоматом на много машин делать
>>566416 Ну да для того чтобы поставить сам virtualenv pip возможно gcc какие-то -dev библиотеки если надо могули на си ставить это из скрипта придется делать но это одна строчка.
Привет всем, я полгода уже не кодил на питошке, нужна ваша помощь. Надо скачать 5526 pdf статей с PubMed, план такой: - я беру айдишники этих файлов и преобразую их в ссылки - по адресу ссылки есть кнопка для скачивания с которой в копирую ссылку - качаю все через wget
Как уже упоминал, я многое забыл и у меня как-то с fire bug и selenium на заладилось. Помогите парой строк кода для копирования ссылок для скачивания. https://pubget-hrd.appspot.com/?q=26279571&pdf_only=on вот так выглядит сайт и надо скопировать ссылку с кнопки "direct link to its pdf". Спасибо
>>566305 Зайди в жс-тред, там точно так же по губам проводят копипистерам в тред, потому что, внезапно, отступы используют везде, что очень сильно способствует чтению кода.
>>566617 Нет. Всякие эти курсы - говно для дебилов. Гораздо лучше можно научиться если что-то начинать делать и если есть коллеги по работе, которые могут что-то подсказать, объяснить.
>>566621 Двачую пациента сверху. Курсы - говно. Не умеешь программировать сам - иди учить других. На этих курсах вот такая логика.
Просто возьми и начни делать. Документации навалом. Перебери и найди подходящую себе. Если что-то непонятно - спрашиваешь у гугла. Совсем непонятно - у двача.
Только начал разбираться в питоне тут, появился вопрос - можно ли как-то работать с текстом в командной строке ещё не введённым, то есть без нажатия ввода? То есть что-то типа такого: запустил шелл питона, там запустил программку, начал вводить слово и программа допустим сразу из списков своих в следующей строке предлагает варианты слов начинающихся с этих букв
>>566914 Не, я в итоге хочу внутри cmd запускать программу, чтобы она принимала на ходу буквы и предлагала слова начинающиеся с этих букв.
То есть программа запускается, ждёт символов каких-то. Как только получает, например букву 'p' предлагает слова из списка внутри программы, допустим 'python', или 'penny'. И всё это без нажатия enter'а и собственно ввода, то есть если в строке 'pyth' стереть символы до 'p' - она снова предложит пенни и питон (ну как например ввод в поисковиках действует, живой поиск, но в командной строке). Как-то так, надеюсь нормально объяснил.
Здорово, бандиты. Питон 2.7.1, urllib2, json Скачиваю кусок json в utf-8. Пишу его в файл. В полученном файле вперемешку встречаются / и '/'. Как заставить питон конвертировать / в '/' ?
>>566675 Самая хуйня в том что афтары библиотек не хотят поддерживать две ветки библиотеки под раные питоны. Они либо забивают на одну ветку, либо делают ебучего мостра который будет работать под обоими версиями питона - это медленее и код страшнее.
Пацаны, не учите этот питон. Работы вы на нем не найдете даже в ДС. Ваканский мало, зарплаты нищеебские типа 60-90к, а это сейчас $1k всего. Раньше было получше с этим но как кризис то всё пизда. Для специалистов по нормальным же языкам типа явы ваканский около тысячи в одной дс и зарплаты есть и по 200к.
посоны, подскажите как на питоне решить такую задачу: нужно проверить есть ли одна строка в другой, но допускается неточное совпадение, например проебаный мягкий знак, тк одна строка получена машинной транслитерацией в две стороны
А вот тут хз, что делать, все как в учебнике Доусона. Выводит ошибку Traceback (most recent call last): File "C:/Python34/Пример приложения на tkinter с ООП.py", line 29, in <module> app = Application(root) File "C:/Python34/Пример приложения на tkinter с ООП.py", line 13, in __init__ self.create_widgets() File "C:/Python34/Пример приложения на tkinter с ООП.py", line 17, in create_widgets self.bttn1.grid() AttributeError: 'Application' object has no attribute 'bttn1' https://ideone.com/fOnAoh
>>567638 > line is too long Отключи эту хуйню. Это тупое ограничение не актуально, 80 символов в ширину охуеть, у нас не vt100 экраны сейчас. Конечно совсем уж слишком длинных строк стоит избегать но 80 символов слишком мало.
>>567642 Тогда только на присваивание лямбды ругается. У меня она оче короткая и внутри другой функции, чот не хочется отдельно def делать, и саму лямбду по коду копипастить тоже.
>>567647 > У меня она оче короткая Ну и что > и внутри другой функции, Ну и что, можно делать def внутри def > саму лямбду по коду копипастить тоже. Зачем её копипастить? Может если ты её копипастишь то надо бы это как раз в отдельную функцию вынести причем на уровне модуля, а не внутри другой функции?
>>567649 def лишняя строчка, не хочу лишнюю строчку. Присваиваю потому что лямбда используется всего два раза и check = lambda :x check() check() лучше чем копипастить саму лямбду.
>>567660 https://docs.djangoproject.com/en/dev/internals/contributing/writing-code/coding-style/ > An exception to PEP 8 is our rules on line lengths. Don’t limit lines of code to 79 characters if it means the code looks significantly uglier or is harder to read. We allow up to 119 characters as this is the width of GitHub code review; anything longer requires horizontal scrolling which makes review more difficult. This check is included when you run flake8. Documentation, comments, and docstrings should be wrapped at 79 characters, even though PEP 8 suggests 72.
Анон помоги с задачей: Надо запилить прогу, которая выводит, в случайном порядке, все элементы из списка, без каких либо повторов. Компилятор ругается и ничего не работает.
import random inv = ["sword", "shield", "duck", "drug"] y= len(inv) while y>0: x = random.randint(0, len(inv)) print( inv[x]) inv.pop(["x"]) y-=1 input("Hi!")
>>567719 Или вот ещё вариант import random inv = ["sword", "shield", "duck", "drug"] while inv: ..word = random.choice(inv) ..print(word) ..inv.remove(word)
>>567723 >>567721 Ого. Благодарю тебя, добрый Анон. Только, я не понял, почему у меня не заработало. Я забыл, что индекс меньше длинны на единицу (в плане, значение меньше, из-за сдвига). Но как работает это: print( inv.pop(x) ) Т.е. напечатать то, что сразу удалится?
>random.shuffle(inv) это перемешает список Но зачем? Т.е. будет просто рендомный порядок в рэндомном списке.
>>567724 Спасибо. Действительно, проще просто указать наличие элементов списка, как условие цикла.
>>567725 функция list.pop не просто удаляет элемент, а возвращает его значение.
> Т.е. будет просто рендомный порядок в рэндомном списке. Ну можно сделать вот так def randomized(lst): ..lst=lst[:] # делаем копию списка чтобы в оригинальном списке элементы не радномизировались, если мы ходим порядок сохранить в нем ..random.shuffle(lst) ..return lst
inv = ["sword", "shield", "duck", "drug"] for element in randomized(inv): ..print(element)
>>567725 > Только, я не понял, почему у меня не заработало. inv.pop(["x"]) Что это за ["x"] ? Список из одного элемента - строки "x" ? Тебе надо было передавать номер элемента то есть переменную x.
Нашёл библиотеку от чувака, который её периодически дополняет. но перед этим я установил другую библиотеку. которая импортируется так же.
в общем сейчас у меня проблемы с авторизацией. и думаю, что может быть это из за того, что импортируется первая библиотека, которую я установил. Как удалять библиотеки? Т.е достаточно ли просто удалить папку? (не пинайте за тупой вопрос - не питонист)
История >>562358 получила некоторое продолжение. Еще не доделав поиск, начальство теперь планирует переписать на го весь сайт на джанге. Это с учетом что только юнит-тестов я на него исписал около 10k loc. Мне не нравится что простое нежелание изучать орм джанги решили таким кривым способом и я отказался от предложения переходить на этот го. Короче все явно идет к тому что я вылечу из этой говноконторы, но вопрос только в том когда. Суть моего вопроса - стоит ли рыпаться сейчас, в конце года, и искать новую удаленку или стоит все же попробовать дотянуть до следующего? При том что имею на данный момент год опыта работы с джанго.
>>567971 А насчет работы - чет хреново сейчас с поисками работы. Мало вариантов - раньше больше было. Из-за кризиса хуизиса многие конторы перестали нанисать новых, а то и сокращают народ.
Ребята, в общем не могу захуярить простую вещь: запостить пост на стену в вк. Мне это даже по сути не надо, но уже часа два вожусь. не знаю в чем проблема. по сути ничего сам даже не писал хапнул библиотеку https://github.com/dimka665/vk и пример простой с форума. главное вроде бы вещи, не касающиеся авторизации работают. В общем вот код: http://ideone.com/pwtsaE Может кто из местных пользовался этой библиотекой. Ошика такая : TypeError: 'module' object is not callable
>>568075 Годная книжка, её многие рекомендуют. Я правда сам не читал и почему-то у меня она называется "алгоритмы построение и анализ". Автор тот же. Кинь ссылку на этот вводный курс.
>>568269 Попробуй использовать оператор '+' вместо append. Это будет слиянием списков, а не добавлением одного в другой. Если я правильно понял, ты имел в виду именно это.
>>568356 >>568357 Я только со словарем могу. И у меня трудности нередко возникают при переводе это одна из причин, того, что я описал в первом предложении, а вторая это то, что я слова забываю, поскольку их очень уж много.
Прохожу тут задания на checkio.org , в элементарных дошёл до задания с классами и охуел. Чего-то я совсем принципы ооп не понимаю. Что мне почитать чтобы разобраться?
Хотел статистику по пользователям разную пособирать питоном, но с помощью VK API. Дико туплю, так как вебом\урл\хттп раньше не занимался , да и если честно желания никогда и не было. Но конкретно это хочу всё таки добить.
Я получил пользователей в массив, с помощью вк.апи.
Теперь из массива хочу в цикле пройтись по каждому из них чтобы проверить : - жив ли он вообще - открыта ли страница. - сохранить нужную инфу (список видео, к примеру, если открыто, и т.д) , если пользователь интересен , в файл. файл обновляю в цикле. и в итоге по нему собираю статистику
С помощью вк апи можно получить эту инфу, но я встрял так как мне приходится в цикле проходить по всем ID из списка. И если их даже больше 30, то возникают проблемы : Возникают ограничения по запросам в секунду в вк апи.
Поэтому, наверное придётся делать , то что задумал уже без апи. Напрямую. Запросы и т.д
В общем :
- может эту задачу вообще можно как то иначе сделать? т.е какие то лишние движения - если в общих чертах замыслил правильно, то посоветуйте в сторону каких библиотек смотреть? чисто матчасть минимум, необходимая, чтобы сделать эту херню.
Анон, как работать с релизами на гитхабе? Вот есть гитхабовская релиз-система, ок, я выкатываю туда 0.1. Надо ли добавлять --version в сорцы? Если нет, как норот потом будет узнавать какую версию он юзает? Если да, как эту версию бампать между релизами во время обычных dev-коммитов?
>>568625 Ограничение там нежёсткое. 5 запросов в секунду точно можно. Просто делай между ними паузу. У димки на гитхабе такого пока в апи нет, к сожалению. >>568635 Релизы на то и релизы, чтобы во время dev-коммитов не менять версию. В тот момент как решишь сделать релиз, меняешь версию в своей поделке, дописываешь чейнджлог и тому подобное. Коммитишь и релизишь на гитхабе с той же версией до которой поднял.
питоны, страшно и смешно. у меня не работает strip(). for item in text: item = item.strip() print(text) проще некуда, блядь. а пробелы в начале и конце как были, так и остались. каков пиздец.
>>568652 >>568651 Я , в принципе, и делал паузу. Но представь , что у меня 40000 человек. И надо каждого отдельно потрогать. : 40000 человек на 5 в секунду : 8000 секунд.... В общем пара часов... Эх.
>>568654 >>568658 Ты так говоришь, будто бы не используя api, vk тебя не ограничит или забанит к хуям на время. Прокси, ну хуй знает, по моему опыту бесплатные очень медленные. Плюс, опять-таки, димасик не сделал такую возможность пока. Но, благо, сама либа с гулькин нос, так что форкай, дерзай и доминируй.
Блин, я совсем запутался. Мне нужна функция, которая бесконечно обновляется
Обычный бесконечный цикл while True работает отлично, но я не знаю как запихнуть его внутрь функции, чтоб потом можно было ее линкануть из другого скрипта. А функция автоматически завершается, как только получает первое значение из while цикла и фиг чего сделаешь.
Подскажите в atom можно обойти поеботу с input? Когда в скрипте есть input, atom не хотет выполнять С английским плохо. В гугле нашел ответ одного из разработчиков : "Мы не будем делать stdin" . Я как новичок нихуя не понял.
Нужно написать класс или модель, что-то туплю и даже не знаю как подступиться.
Нужен общий класс "Мебель", у него должен быть атрибут "Тип мебели" от которого дальше должно подгружаться дефолтный набор атрибутов соответствующие типу и которые в дальнейшем можно изменять.
Например, Тип - Ящик. У ящика 2 боковых и 2 задних стенки + может быть ручка, а может и не быть, + 2 штанги. Собственно у стенок есть свои атрибуты вроде размеров и покраски.
Чтобы я мог потом хуярить элементы ввиде строк или блоков как на пикрелейтед. Хранить в базе постоянные величины и сохранять итоговые проекты.
>>569155 Раньше в шапке был варнинг, которой говорил что "питон 2 прекращает поддержку в 2020 и пора переходить на третий", но какая-то обезьяна при перекате его выкинула.
>>569160 Ну я туда заглянул, потом форкнул процесс и с дочернего спросил тут, потом основной продолжил читать шапку, форкнулся и пошел читать хабр, там форкнулся и пошел на кодеакадеми хоспади, какая же это годнота-то оказывается!
>>569193 Ну хорошо, тебе претит эта строка, но несколько вызовов print() - нет. Может тогда лучше оставить строку s=s.strip(), но вызывать print() в цикле? Как тебе такое предложение?
>>569225 Анон, ты посмотри на это с другой стороны. Эта строка тебе кажется не красивой, но ведь красота в ее простоте и очевидности, даже через долгий промежуток времени ты сразу поймешь что она означает, а ведь про тот же map такого не скажешь. Да и выглядит она аккуратней чем map(str.strip, multiline_string.split('\n')). А как ты помнишь дзен говорит нам, что явно лучше, чем неявное. Может таки стоит пересмотреть свои взгляды?
>>569153 Не пользовался ими. Попробуй run-in-terminal, запустит твой кал в терминале без хипстерства. >>569220 for word in map(str.strip, str.split(line)): нормальное решение. Что тебе не нравится?
Пиздец, обучаюсь на этом вашем кодекадеми, грит - напишите PigLatin translator и написано как должно быть в итоге, полазил в гугле, написал с ошибкой - говорит, мол, молодец, го дальше, но я так не считал, кликнул крестик, по итогам написал рабочий код эта хуета еще и переменные не очищает перед каждым запуском, следующий урок "принтаните свинячья латынь", принтанул перед своим кодом, следующий урок - трет весь мой код и говорит "ебани сюда рав инпут братуха", ну ёб твою мать.
>>570129 В питоне нет многострочного комментирования типа как // в си. Только # Если ты тройные кавычки будешь для комментирования использовать то это не комментирование т.к. будет создаваться строковая переменная всё равно. Часто их используют для docstring`ов но это не комментирование это другое.
>>570129 > Python имеет остроумную особенность, называемую строками документации, обычно обозначаемую сокращённо docstrings. Это очень важный инструмент, которым вы обязательно должны пользоваться, поскольку он помогает лучше документировать программу и облегчает её понимание. Поразительно, но строку документации можно получить, например, из функции, даже во время выполнения программы!
>>570137 >Поразительно, но строку документации можно получить, например, из функции, даже во время выполнения программы! Это как? Что подразумевается точнее
>>570157 Потому что порядок элементов в словаре не сохраняется. Если тебе нужно сохранять порядок используй списки или from collections import OrderedDict
Гайс, решил написать rss-ридер для практики. Сейчас поставил feedparser, скопировал код для парсинга atom-ленты, сейчас пытаюсь получить контент статей в rss-ленте, но интерпретатор ругается на Unicode error. variable.encode('utf-8') помогает, но это херня какая-то.
Код: import feedparser
r = feedparser.parse('randomnoye url') print(r.entries[0])
import random inv = ["sword", "shield", "duck", "drug"] while inv: (отступ) x=random.randint(0, len(inv)-1) (отступ) print(inv.pop(x)) input("Hi!")
Благодарю за помощь. Прошу благородного дона поправить меня в перечне функций и их значений:
x = random.randint(0, len(inv)-1) - будет присваиваться случайное значение 0 до числа элементов списка, за вычетом единицы. inv.pop([x]) - принтует и удаляет элемент №х. Если я не укажу аргумент х, то удалит самый последний элемент списка. word = random.choice(inv) - просто делает случайный выбор из списка, который будет занесен в переменную ворд. def randomized(lst) - не догнал, что это. random.shuffle(lst) - перемешивает элементы изменяемой последовательности. Соотв. не работает с тем, что неизменяемо.
1.Правда ли, что списки и кортежи Пайтона являются полноценным эквивалентом массивам из других языков? 2.Правильно ли я понимаю, что в Питоне нет констант, как таковых и любую переменную можно изменить в процессе работы кода?
Прошлый: