Это копия, сохраненная 9 марта 2018 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Свой код кидайте через https://ideone.com/
Книги и ссылка на PyCharm: https://yadi.sk/d/tArKKuQu3Kejuq
Предыдущий тред >>1110782 (OP)
Python питон
У меня есть бот, который просто постит пикчи раз в час, через time.sleep()
Пикч много (15 гигов), что мне это всё на хероку добавлять? Звучит как какая-то глупость. Как правильно сделать?
1) Как лучше изучать джанго по русскоязычным материалам? Прошел django girl и туториал по 1.9, читаю документацию, но она слишком разрывная, и приходится кидаться от материала который мне пока еще рано или не нужно, к нужному, но так как это всё в отрыве друг от друга, нормального обучения не выходит.
Копаю код на гитхабе в обнимку с документацией, но опять же... посоветуйте может какой то целиковый поэтапный мануал или просто годный материал, который поможет с пониманием того, что я пишу и вижу.
2)Как лучше изучать фронт... отдельно html+css+js или сразу Bootstrap? Или может есть какой ни будь подобный фремворк или в обще идея как быстрее вкатится в вёрстку?
Че про udacity в плане обучения питону с нуля скажете?
<h2 class="heading_10">[Exclusive Sale] Xenoblade2 - Pyra 1/7 Complete Figure(Pre-order)<br/><span class="sub_title"></span><span style="font-size:50%;padding:2px;">【限定販売】ゼノブレイド2 ホムラ 1/7 完成品フィギュア</span></h2>
Как отдельно вытащить англ и японское названия?
С Beautifulsoup 4
Говно, если уже и брать какие-то курсы, то едх компьютер саенс по питону от МИТ, но лучше энивей книги читать
В коде.
1. Как мне у пик релейтеда взять среднее по столбцам?
2. Как нарисовать несколько графиков на одном холсте?
У меня есть dataset, разделённые на 2 периода.
Я хочу по оси абсцисс вывести значения из обоих периодов, то есть из оригинального датасета, а потом нарисовать там прямую по первому периоду и по второму. (периоды на 2 пике)
1. array[:,col_idx]
2. https://matplotlib.org/users/pyplot_tutorial.html
plt.plot(y1,x1,x2,y2,x3,y3); plt.show()
Спасибо!
>1. array[:,col_idx]
Traceback (most recent call last):
File "rail_0.py", line 36, in <module>
ppc = ppc[:,col_idx]
NameError: name 'col_idx' is not defined
Нет, я тупой и только начал учить питон.
Хотя полагаю, что это column_index и надо подставить число.
Сейчас попробую.
Сейчас почитаю, похоже на то, что нужно.
А с гифками что, может на какое-то облако имеет смысл залить?
Мне 45 лет, я сидел еще на том дваче.
Traceback (most recent call last):
File "test_rail0.py", line 42, in <module>
ppc = ppc[:,1]
TypeError: unhashable type: 'slice'
Ну очевидно же, что твой сервис должен картинки откуда-то брать. Выбери откуда и бери оттуда, бля.
>>19533
Во-первых, фриланс хорош если ты заебато делаешь. Во-вторых, пифон плохо подходит под числодробильные задачи. Всё что есть в пифоне для ебли с числами сделано на си или каких-то других языках.
Аргументы о лучшей читаемости™, возможности работать с калькулятора в split screen, о предотвращении излишней вложенности — уже слышал, не убедили, я одинаково хорошо могу читать и на 80 и на 120 символах. Излишнюю нагруженность кода не даст сделать сам синтаксис: ванлайнеры только в перле диды шлёпали, сейчас так никто не делает. И всё-таки зачем и почему это так популярно именно у питонистов?
Спасибо, японский вытаскивает нормально. А вот англ выдает ошибку.
Наверное, надо было добавить, что html не отдельный, а уже как найденный кусок.
info4 = page_soup.findAll("h2", {"class": "heading_10"})
container4 = info4[0]
Тoт html - это container4
type(container4)
<class 'bs4.element.Tag'>
С яп сработало так:
jap = container4.find('span', class_='').text
if jap:
Jap = jap.strip()
else:
Jap = "NA"
С англ как-то не очень получается.
ок сделал через жопу, зато получилось.
r = str(container4)
container5 = soup(r[:r.rindex('<br/>')], 'html.parser')
if container5:
eng = container5.find('h2').text.strip()
else:
eng = "NA"
Какую обвязку советуете использовать?
Сейчас пишу используя
Telebot, mongodb, aiohttp
Как правильно сделать асинхронное взаимодействие с ботом?
Стоит под каждый коллбэк свой хэндлер выделять, или в одном хэндлере через if определять действие?
Няша, ты пишешь разу не делил экран на два-три окна с кодом на ноуте? Там не 80, там 40 колонок сделать хочется, учитывая, что справа ещё и браузер.
А вообще, наследие консольных текстовых редакторов. Особенно в git, в сообщениях коммита.
>Подобное индексирование, с запятой, возможно лишь у numpy'евских массивов, а не обычных списков.
Оказалось, что это словарь.
Сделал ppc = ppc['accidents'] и всё заработало.
> Ну очевидно же, что твой сервис должен картинки откуда-то брать. Выбери откуда и бери оттуда, бля.
Хорошо, очевидно, куда, амазон 5 гигов разрешает, с гугл сторейдж я просидел вчера часа 4 и нихуя не понял как оттуда по апи выкачивать картинки выкачивать. Что выбрать?
Ещё вопрос, по сути я же могу взять впс, скачать туда локально все картинки и просто запустить этот скрипт там и он будет бесконечно их постить за бакс в месяц?
> по сути я же могу взять впс, скачать туда локально все картинки и просто запустить этот скрипт там и он будет бесконечно их постить за бакс в месяц?
Ну да, пока трафик не кончится.
2TВ в месяц за бакс, и 720 гифок в месяц, некоторые из которых по 15 мб, а многие по 2-3.
Разве этого не хватит?
В нём вообще можно несколько графиков на одном холсте нарисовать, как с matplotlib.pyplot?
Еще проблемы возникают из-за множества отдельных тегов.
Вот код:
https://ideone.com/4RDebh
Не могу понять, в чем проблема. На отдельной ссылке выдает результат, как положено. А вот когда пробую прогнать по списку url, возникает какая-то ерунда типа:
Price: NA
Sale: NA
Status: NA
Sell price: NA
Price: NA
Sale: NA
Status: NA
Sell price: NA
Price: NA
Sale: NA
Status: NA
Sell price: NA
Подскажите пожалуйста, весь день с этим сижу, никак сообразить не могу в чем проблема.
А что, хабрамакак ещё не всех сожрали, что ли?
Но зачем его делить если есть аж целые воркспейсы с хоткеями? Очень редко нужно действительно в двух местах один файл подредактировать, но я считаю это не стоит убитых усилий на постоянный реиндент кода.
>>19853
Меня твои истории просто доебали уже, я уже не могу их слушать, блядь! Одна история охуительней другой просто! Про картинки, блядь, про какую-то хуйню, амазон, гугл сторейдж... Чё ты несешь-то вообще? Ты можешь заткнуться? «Впс блядь, взять — за бакс в месяц». Чего, блядь? Про что несешь? Вообще охуеть.
затролел)
Ну два файла в вертикальном сплите-таки часто очень полезны, я бы сказал.
Другое дело, что у меня на 15" помещается по 131 символу в кажом из окон.
>не стоит убитых усилий на постоянный реиндент кода.
Да не так уж и много усилий требуется. Широкими только логи или вызовы функций с кучей аргументов получаются, но это не так уж часто.
Вроде как, 80 (вообще, чего-то про сотню уже когда-то я видел) это просто рекомендация к чему нужно стремиться, чтобы держать себя в руках, но если ты видишь, что нужно больше и не является кривожопым новичком, то спокойно делай больше (в разумных пределах).
Пробовал так:
if len(list) == 2:
x= list[1]
if x:
x2= x.text.strip()
else:
x2= "NA"
else:
if x:
x2= list[0].text.strip()
else:
x2= "NA"
И еще так:
if list:
x= list[1].text.strip()
else:
x= "NA"
Спасибо
>Вот код:
Это не код, это пиздец полнейший. Разбираться в этом никто не будет, уверяю.
>На отдельной ссылке выдает результат, как положено. А вот когда пробую прогнать по списку url, возникает какая-то ерунда
Значит ты не так проходишь по списку урлов. В идеале должно быть:
for url in urls:
data += get_data(url)
То есть несколько урлов это просто надстройка над уже имеющимся обработчиком ссылки, и 1 там она или их 20 влиять на, собственно, скачивание данных не должно.
Как у тебя сделано я не знаю, смотреть больно. Вот подправил последнюю часть, уж хотя бы так сделай, а не десять раз один и тот же код копируй — https://ideone.com/2K5Pnu
Да и вообще убери к хуям все эти 20 текстовых полей перед выкладыванием сюда, оставь 1-2, при которых всё равно ошибка появляется.
Хватит.
Нужно как-то загрупить это всё по директории, то есть чтобы файлы из кажой директории "а" находились в отдельном списке, как это лучше всего сделать?
Или не выёбываться и продолжать юзать exec ?
https://pastebin.com/Zcputfqk
Благодарствую
os.path.split() выделит имя папки
https://pastebin.com/NVt6zPYt
https://ideone.com/pya7eC
Ошибка:
Traceback (most recent call last):
File "backup_ver2.py", line 21, in <module>
os.mkdir(today) # создание каталога
FileNotFoundError: [Errno 2] No such file or directory: '~/backup/20180115'
Да, я даун. Но я же создаю каталог с помощью этого - os.mkdir(today)
>Что не так?
Не знаю, может быть почитать что там написано? Хотя о чем это я, сложна сложна сложна
Хотя не тут-то было, все работало и работало, а на 5527 ссылке опять ошибка вылезла.
Здесь:
status1 = page_soup.findAll("li", {"class": "selling_price"})
Status = status1[-1].text.strip() or 'NA'
list index out of range.
Пробовал так заменить:
Status = status1[-1].text.strip()
except IndexError:
Status = "NA"
Но тогда он выдает совершенно другой параметр. Хотя статус именно находится в последнем элементе на всех страницах. Очень странно.
Submitting dist/govno.tar.gz to https://upload.pypi.org/legacy/
Upload failed (503): Service Unavailable
error: Upload failed (503): Service Unavailable
ЧЕГО, БЛЯДЬБ? Какой нахуй легаси, какой нахуй 503? Хуле ему надо, блядь? У меня проект из одного файла без километра зависимостей, почему я должен так страдать? Почему блядь нельзя просто в веб-морде этого говнопипа указать ссылку на гитхаб, чтоб он сам все подхватил и сожрал? Какой-то каменный век, блядь.
Ткните меня в нормальный гайд, короче.
Спасибо тебе, антош)
Спасибо, залил. Теперь бы еще разобраться почему ридми с лицензией не подхватило, но это уж я сам.
Пришлось long_description в setup.py заполнить контентом из ридми, сам файл ловить не хотело, что README что README.rst. Пиздец я напердолился конечно, deb и то легче собирать, особенно порадовала невозможность апдейта/перезаливки версии, даже на тестовом сервере. На каждую попытку запихнуть ридми как мудак создавал новую.
Ебал вас в рот, питонобляди. Ну вот что за мразь придумала MIXINS i.e MULTIPLE INHERITANCE? Просто охуеть, эти долбоебы даже не подумали, что вместо этой хуйни код реюзать можно с помощью КОМПОЗИЦИИ и ввели ЭТО в язык.
Какой же питон жалкая подобия жабы, я ебал. И как только чувакам удаётся писать на этом говне.
это называется java головного мозга
Как сделать так, чтобы у меня получился список, в котором будут списке по 10 элементов? Т.е. [ [1,2,3,4,5,6,7,8,9,10] , [11] ]
Стоит отметить, что количество всех элементов в списке не ркатно десяти.
Ахуенно! Спасибо!
Имплаинг оно не для долбоебов
Пацаны-питаны, подкиньте мне, пожалуйста, годную книженцию/тутор по джанге на русском.
В данный момент читаю Lightweight django от орли на ангельском, дюже туго заходит. опрос сделал, мне не хватило
Каков простейший способ заставить эти функции выполняться параллельно?
Юзать acyncio или есть способы попроще?
Спасибо.
threading/multiprocessing. Вместо asyncio есть ещё curio.
он не долбаёб, перестать так говорить
Не в гиле дело, там дальше чередоваться они начинают. Просто пока запускается второй тред, первый уже нахуярил много принтов, которые выполняются гораздо быстрее.
А то что большими пачками идут, так это проблемы идеона, у меня на компе через один идут.
Впрочем, выполняются они не истинно параллельно, это да. Но судя по наличию asyncio в запросе, это и не требовалось.
Ну бамп блять. Вы что, суки, литературу не можете посоветовать что ли? Кучка бесполезных пидорасов-змеетрахов.
Не можем. До свидания.
Если встречается одиночный знак пунктуации, или такая последовательность, то ее нужно заменить на '_'.
Отдельно стоящие знаки пунктуации на '_', если встречается группа знаков пунктуации, то ее тоже на '_'
например,
'.h!?uy,.-!?' -> '_h_uy_'
Спасибо, няша.
Херач в репозиторий хероку
Я писал, но небольшого бота с расписанием пар и заданиями.
Все делал через отдельные коллбеки.
Желательно , чтобы были ответы и система контроля
То есть мне нужно имея:
param_first = ('q','w')
param_second = ('z','m')
def fun(frst, sec):
____ pass
Получить:
tasks = [
fun('q','z'),
fun('q','m'),
fun('w','z'),
fun('w','m'),
]
Параметрические уравнения это то что мне нужно? Что-то не очень понимаю как это записать в коде.
def inter(a, b, t):
return (b - a) t + a
def inter_n_dims(a, b, t):
return tuple(map(lambda ab: inter(ab, t), zip(a, b)))
print(inter_n_dims([0, 0, 0], [5, 7, 9], 0.3))
Так его наборот абулик выпилил. Был `код` и тег code
Там что автор пакаджа написал то и будет. По-хорошему нужно прописывать.
Спасибо анон, все оказалось очень просто и очевидно.
Вроде что-то знаю в матане, но всегда теряюсь когда увеличиваются размерности.
Недавно тупил как найти условный центр набора точек, хотя в 1d мне бы сразу пришло элементарное решение: среднее арифметическое координат. Чувствую себя унтерменшем.
Учи английский, ну ебанарот. Ты с этой русскоязычной литераторой всегда в доме будешь. а так читай перевод доки, там 1.9 версия переведена практически полностью
Давай вместе изучать. Я тоже вкатываюсь, больше мотивации и вместе проще разобраться
Все у кого есть желание вместе вкатываться в Django и веб с python разбирая сложные моменте и проекты, делясь актуальными материалами и тд, заходите https://t.me/pythonchick
Multiple Inheritance ещё в C++ был.
и да, я знаю, что забыл сначала перевести i в int, не в нем суть
Единственный вариант, который я вижу — это тупо захардкодить список из 1500 элементов, но ведь это наверняка тупая затея? Может ты знаешь что-то лучше, анон?
Есть два списка: приходящий свыше список данных в каком-то случайном порядке и хранящийся локально список айдишников в нужном порядке.
Список айдишников может содержать как меньше элементов, чем в спиское данных, так и больше. В спиское с данными может не оказаться ни одного из нужных айдишников.
На выходе требуется получить упорядоченный список, в котором сначала будут идти те элементы, которые есть в обоих списках, причём именно в том порядке, что указан в локальном списке, а затем все остальные из списка данных в каком угодно порядке. Лишние элементы из локального списка игнорируются.
Накалякал вот так — https://repl.it/repls/VirtualHotPony название хорошее, но не уверен, оптимальный ли это вариант. Списки мелкие, производительность не особо волнует для практических целей, но правильный подход, если я херню сделал, пригодился бы. Дело не в питоне происходит, если что.
Есть у кого мнение/идеи?
по понятиям использовать enumerate
- создаешь множество из списка, приходящего свыше
- для каждого элмента локального списка смотришь, есть ли он в множестве см. выше, если да, то 1) добавляешь его в результат 2) извлекаешь его из приходящего свыше списка
- к результату приклеиваешь то что осталось от приходящего свыше списка
- ???
- пруфит
Насколько мне известно файловые системы не определяют порядок файлов. Там что-то вроде хэш-таблиц. Сортировки делаются уже от полученного списка. Сортируй и складывай в кэш если что-то долго считается, но редко изменяется.
это плохая практика ?
если да то как исправить?
да бля, времени нет пока
Описание:
Following the trails of your lost master - Λoile - who you inherited your mad programming skills from, you have finally caught a lead and begin your adventure into the dungeon where progress can be made. To pass the first cave, you need to crack the code on the podium sitting in front of the gate, blocking you from moving onwards.
Fortunately, you have access to the internet, make good use of it. To pass, implement the function in your language based on the code as given. Good luck!
Исходные данные:
:345/.87vv98,:<>
v/52:,+2<>- |
>6%.:52%.1+:25^@
Если заебёт - просто вскрою ответ
ну ёба, коммент по поводу out.append(p) там для кого бы?
В любом случае, принцип тот же: лупимся по локальному, добавляем что есть, а затем всё остальное. Я, впрочем, даже и не знаю, зачем спрашивал, тут ничего другого-то и не сделать, но немного надеялся на какой-нибудь магической оператор.
Насчёт remove норм идея, но мне, во-первых, эту хрень в actionscript'е накостылять надо, я хз что там с remove и extend, во-вторых, именно элемента из preferred_order в elements лежать никак не будет, а значит ещё один луп на поиск индекса для удаления), ну и в-третьих, затратно эти все удаления будут на больших списках.
В общем, спасибо, учту всё.
Да
ну я из глобального питона даже celery не смогу вызвать, gunicorn и все такое запускаю только после source blabla
судя по всему все отрабатывает нормально и виртуальное окружение тоже запускается. если бы нет, выдавало ошибки что celery не установлен
Виртуальное окружение по сути это просто папка с симлинком на обычный питон и локально установленными библиотеками. Т.е. celery находится ВНУТРИ виртуального окружения и ее можно запускать (и нужно) прямо оттуда. Однако чтобы постоянно не пользоваться длинными абсолютными путями придумали легкие способы быстро перенастраивать среду - всякие virtualenv специфичные, кстати, для разных шелов. То, что у тебя всё работает - необычно, не факт, что так будет всегда. Я бы запускал так: venv/bin/.../celery При этом сделал бы это отдельным сервайсом, который бы зависел от сервайся реддис. Дергать же всё это из питона - такое себе.
А, просто аттрибут __class__ поменять.
> Я бы запускал так: venv/bin/.../celery При этом сделал бы это отдельным сервайсом, который бы зависел от сервайся реддис. Дергать же всё это из питона - такое себе.
учту. Спасибо.
Что использовал? Многопоточку как сделал?
Да это не в продакшн.
1) tornado же чисто на питоне написан, откуда у него берется эта чудо мощь ?
2) с pscorpg2 можно нормально работать из торнадо или нужен другой драйвер для бд?
1) Что там такого мощного? Те же сисколлы дёргает что и остальные, гринтреды/корутины вместо системных потоков, неблокирующие вызовы — всё стандартно.
2) Нужен другой, https://github.com/FSX/momoko
3) Бери asyncio/aiohttp/aiopg. А ещё лучше подумай ещё раз нахуй тебе это всё надо, успокойся, возьми джангу, сделай и дальше покорять мир, пердолятся пусть другие. Если только тебе не чат вебсокетный нужен.
Я сделал селект из базы по значениям трех столбцом, затем, я этот селект хочу еще разбить на два и поработать с ними(update/delete).
Дело в том, что записей много -1кк+, первый селект достает около 50к данных, а второй и третий эти данные еще разбивают на две части и происходят основные вычисления.
P.s. С sqlalchemy все совсем медленно, хотя логика такая реализуется просто.
Посматриваю уже в сторону многопоточности.
бамп вопросу
>>21593
Я не знаю как в кэш что-то складывать, но это посмотрю, кроме всего прочего. Когда я буду доставать через АПИ, то там ещё нужно будет более сложные сортировки проводить, отедять строки, присоединять и тд, а так у меня сразу есть отсортированный список с конечными результатами, всё равно лучше в хэш?
>>22016
>через консоль
Вот тут поподробнее, а то я совсем всратый в этом плане
просто происывая имя файла он говорит, что не видит его, понятия не имею, в какую директорию ему файл нужно деть
ну во-первых, если ты просто в консоли напишешь python, заходит в интерактивный сеанс? Если нет, то нужно добавить в path, гугли как добавить python в путь.
Еслиа да, то просто перейди из консоли в папку, где скрипт cd d:\\path\to_folder и там напиши python if.py
Чисто к сведенью, с опытом верстки 15+ лет, я так и не смог осилить bootstrap. Он мне очень нравится, но очень сложно инсталлировать все его инструменты для его работы и, кажется, проще на линуксе.
Да, заходит
>то просто перейди из консоли в папку, где скрипт
как, при условии, что я еще макоблядь, а скрипт у меня на папке на рабочем столе? после винды пиздец непривычно это все
Блять, спасибо, мил человек, но 2 вопроса
1. Что не так с сублаймом
2. Как в консоли настроить, чтобы постоянно ссылаться на эту папку, а не прыгать в нее каждый раз?
> 1. Что не так с сублаймом
без понятия, я сублаймом пользуюсь только если какие-то скрипты нужно навернуть и хз, возможно, там второй питон экзекутиться, а во втором вроде правильно raw_input хз, не уверен.
> 2. Как в консоли настроить, чтобы постоянно ссылаться на эту папку, а не прыгать в нее каждый раз?
echo "cd ~/Desktop/" >> ~/.bashrc
учсиь гуглить, полезный навык для программиста
на счет второго, кстати, не уверен, потому что я не знаю так это на маке работает, или нет, а команда для убунту
Почему график пустой?
Procfile, requirements, runtime — всё есть.
В прокфайле написал web: python bot.py
Что может быть не так?
>xrange
как там в 2007?
Графики пустые, очевидно, потому что массивы, которые ты пытаешься отобразить, пустые. Пустые они по двум причинам:
1. Ужасный названия переменных, за такое убивают.
2.
>np.append.Amplituda1 = ...
>np.append.Chastota1 = ...
Это что, блядь, такое? Откуда ты это взял? Прочитай ещё раз, как элементы в массив/список добавлять.
>out.append(p) is not ok because preferred_order only contains IDs, not the data
ну пройдись map-ом потом
Это заблуждение. Регэкспы надо использовать, когда это возможно. А вот изобретать велосипеды - ошибка. Другой вопрос, что особо сложные случаи - это отдельные задачи и к ним нужен свой подход, решать всё подряд через регэкспы - вот ошибка. Ну и даже там где регэкспы применимы, нужно придерживаться хорошего стиля, сравни вот это: https://pastebin.com/VwskMCRp вот с этим: https://pastebin.com/d5E2CDyf - одно и то же ведь написано. Да, можно делать хитрожопый сплит и адресоваться к элементам списка, вот только такой подход чреват ошибками - если во входных данных поле будет пропущено, то индексы после сплита сместятся. Плюс код с именованными группами гораздо понятнее чем после сплита с кучей квадратных скобок.
Он парсит аргументы командной строки, которые в argv хранятся как список строк. А я сам ввожу команду и аргументы одной строкой.
И как он будет работать с ковычками? Я смогу 2 слова в значение аргумента передать?
Понял. Спасибо
Просто признай, что окромя озвученных никаких тысяч больше нет. Отсилы еще штук 5 наберется, разработка которыхтеще в прошлом веке была прекращена
Господа, прощу помощи ибо уже крыша едет у меня совсем.
Надо данные сохранить в бд, постгрес, пользуюсь для этого psycopg2
Собственно вопрос:
есть словарь и надо его в таблицу засунуть - что я делаю не так?
self.cur.execute("""CREATE TABLE IF NOT EXISTS {} ( ID serial NOT NULL PRIMARY KEY, data json NOT NULL )""".format(tag))
self.cur.execute("""INSERT INTO {}(data) VALUES ("{}");""".format(tag, line))
где line это и есть наш словарь который я хочу как жсон запихнуть туда, но чет совсем не выходит
self.cur.execute("""INSERT INTO {}(data) VALUES ('{}');""".format(tag, json.dumps(line)))
пробовал вот так, но в словаре есть ' где-то, которая ломает восприятие строки
Порты под сперму есть, да. Но выглядит ненативно.
>в словаре есть ' где-то, которая ломает восприятие строки
Перед укладкой в базу строку нужно эскейпить. Гугли escape string
ломай, только помоги засунуть в таблицу
А тебе в морду разок двинул.
твой совет помог, спасибо большое.
Знаю, что делаю все мягко говоря очень не правильно, по мне хоть как-то написать нужно
Эскейпить каждое текстовое поле перед укладкой в базу - это правильно. А для полной правильности нужно еще unescape делать, когда из базы текстовое значение берешь. В приличных фреймворках обычно это предусмотрено и прозрачно для программиста.
>Эскейпить каждое текстовое поле перед укладкой в базу - это правильно.
Открой для себя prepared statements.
А тебя бы погладил.
Итак, пошёл на хуй.
_____________________________________________
С уважением, тимлид питон-треда
def zero_div(a, b):
return float(a) / b if b else 0
Принимает число. Это как вообще?
Возвратить результат деления а приведенного во float, если b ≠ 0, в противном случае возвратить 0.
Неправильно, кстати.
А нет, объекты, всё понял.
Надо будет дошиша http реквестов делать , че лучше для этого взять? пока думаю про pycurl она самая быстрая
это не сильно будет влиять на скорость, но да можешь pycurl юзать.
Ну раз тимлид, то и подсказал бы самые норм средства, для построения подобного приложения, а так пока ты пукич а не тимлим
9 асинхронных задач.
Каждая фильтрует для себя по 100к строк из БД, проходится по ним, делая вычисления и обновляя данные/удаляя старые.
На самом деле код просто не оптимизировал до конца и вначале postgres грузил проц на 100%, а потом пайтон добивал оперативку.
Тестирую под нагрузкой отложенную задачу, которая на сервере периодически запускается и шерстит БД на подходящие друг-другу предложения.
В реальности такое кол-во данных не успевает скапливаться, но всё же. Дало повод к размышлениям и оптимизации.
Какие програмы вы писали для своего портфолио?
Ты думаешь, что aiohttp будет собирать контент по http быстрее pycurl? Напоминаю, нужно будет собирать тонны постов
И таки multiprocessing.dummy.Pool + psycopg2 к хуям уделал aiopg/asyncpg + asyncio.
Одинаково будут, всё в сеть упрётся, а вот лишние зависимости типа curl нахер не нужны. Плюс — все бонусы от работы с asyncio.
https://magic.io/blog/asyncpg-1m-rows-from-postgres-to-python/
Я склонен верить Юрке Селиванову, а не какому-то хую с анонимного форума.
У нас с ним немного разные цели работы скрипта, мой в асинхронном режиме лососнул и ещё проц/оперативку загрузил, в мультипроцессорном - всё ок.
Ну и тут скорее предъява не лишь к БД а к связке + погрешность на мои цели.
Наполнение тестовыми данными я тоже делаю через asyncpg + asyncio и доволен скоростью.
Значит ты чем-то пользоваться не умеешь.
В wine может и получится.
Воришка
Это сайт с чатиком, например. со смешными картинками. Сервера все под линуксом работают.
Тот даун неверно высказался, а ты кретин не догоняешь, что могут быть веб приложения для управления сервером. Тот же webmin, например.
по 1ому, перевести в numpy массив, затем
numpy.mean(a[:,0])
где a - массив, 0 - индекс столбца,
ну 2017.3.2
if a == '1':
b = a + '1'
fun(self, c, d)
#
Аноны, как b закинуть в fun() ?
Потому
Почитай как они (pyinstalle/cx_freeze) работают, и почему они не компиляторы, и почему нельзя сделать кросс-упаковку, и уябывай
Хочу купить сервер на Арубе (тот самый за 1 евро в месяц) для днище телеграм ботов, мб скрапинга, в общем развития в прикладных штуках для питона. Там кучищща всяких пресетов, какой выбрать, анон из списка пикрелейтед?
Я понимаю, что, скорее всего, можно брать просто любой линух, но все же, мб есть подводные камни.
CentOS - старье.
Debian поновее + совместим с домашней убунтой.
Ubuntu server - максимальная совместимость и свежесть, но в ущерб надежности.
Нормально подставляет:
https://doc.qt.io/qt-5/{class.name.lower}.html#{function.name}
Не подставляет:
Точнее открывает в броузере УРЛ выделенной части
https://pyside.github.io/docs/pyside/PySide/{module.name}/{class.name}.html#PySide.{module.name}.PySide.{module.name}.{class.name}.{function.name}
Откомпилил приложение с PyQt - окошко с тремя кнопочками весит 300мб. Какая из этих библиотек будет меньше весить?
У тебя Qt полностью статически собран, все либы оказываются в одном исполняемом файле.
>бомбит
Сынок, я с прыщами пердолиться начал, когда ты еще пешком под стол ходил. За годы пердоленья с консолечкой анус уже титановый стал.
неплохо, напоминает AppImage.
Мне бы вот что хотелось: статически слинкованый скомпелированный исполняемый бинарный файл из кода питона, возможно с musl.
посоветуйте мб где есть тулчейн-билдскрипты готовые которым только можно отдать file.py и нажать "сделать заебись"?
я пробовал cython --embed но он ДИНАМИЧЕСКИ линкует бинарь к libPython, не то.
Этим управляет менеджер окон, в винде — explorer.exe, в лялихе тот, который выбрал, на макакоосе — файндер. Кьют никак не может повлиять на это.
Сделай self.your_label.move(10, 10) и будет в начале окна. Но это кустарщина. Осваивай QVBoxLayout() и QHBoxLayout(), чтобы все поравнять. А еще лучше инструментом Qt Designer.
Вангую, этот label находится в гори>>23310
> слинкованый скомпелированный исполняемый бинарный файл из кода питона
http://cython.org/
Какие варианты? Редис для этого норм?
на с3 не хочу заливать?
Можешь просто взять Qt Designer и не ебаться с кодом, а мышкой формочки надрочить.
В первую очередь СУБД, к редису прибегают, когда субд не справляется. Например, SQLite, MySQL, PostgreSQL, MariaDB.
Где взять Qt Designer? По-моему его уже больше нет. Теперь эти функции выполняет инструмент Qt Creator из двухгигового SDK.
> Cx_Freeze is a set of utilities for freezing Python scripts into executables
Чёт ты пиздишь, сучара!
но зачем мне субд, если мне по сути я так подумал, достаточно хранить имя последней запощенной картинку и всё?
Плюс, подключить редис будет гораздо легче, чем любую субд.
Сегодня достаточно, а завтра захочется большего. Тебе нужно хранить каждую запощенную картинку с датой поста и адресом. Только так можно сохранить целостность данных.
> Сегодня достаточно, а завтра захочется большего. Тебе нужно хранить каждую запощенную картинку с датой поста и адресом.
лол, но не нужно же.
Имя и есть адрес, мне просто нужно находить предыдущую запощенную картинку и постить следующую, если сервер наебнется, или перезапустится
это сделать?
На JS пишется все что угодно.
https://software.seek.intel.com/python-distribution
В узкой специфике действительно ускорилось всё. В остально особо разницы не заметил.
>говорят распердоливается по скорости быстрее С++
Ну это толстовато.
> NumPy, SciPy, and scikit-learn
Это должно кого-то ебать кроме числодробильщиков? Здесь одна половина анонов хеллоувордит а вторая вторая на джанге пишет.
Дружок-пирожок, тобою был выбран неправильный тред. Клуб 800МБ-на-инстанс-мастерства двумя тредами ниже.
У меня есть строка:
data = conn.recv(1024)
и, вроде как, если клиент ничего не шлёт, то переменной data должен присваиваться пустота. Но нет, условие "if not data" выполняется только после того, как клиент разрывает соединение.
Проблема в том, что из за того, что я не могу определить момент, когда клиент перестал слать сообщение, я не могу очистить свой буфер и все сообщения клиента накапливаются в одно большое.
P.S. использую сокеты
Или, быть может, нужно перед каждой новой передачей сообщения с клиента открывать новое соединение, а потом, после передачи сообщения его разрывать?
Нахуй такие заёбы? Разве это всё уже не реализовано на уровне каких-нибудь протоколов или модулей питона? Неужели так сложно определить, что тебе ничего не шлют?
Попробовал сделать так, как ты сказал и не вышло.
На стороне клиента сначала посылаю размер сообщенияпервым .send()'ом, а потом посылаю второе сообщение.
На стороне сервера принимаю сначала размер сообщенияdata = conn.recv(1024), а потом само сообщениетоже с помощью data = conn.recv(1024). Так вот, первый раз всё проходит нормально - сервер сначала принимает размер, а потом принимает сообщение, но почему то когда я пытаюсь послать сообщение второй раз, сервер считывает размер сообщение и само сообщение как одно сообщение, а не как два разных. И когда я пытаюсь преобразовать строку в int, у меня, естественно, выходит ошибка. Чё за нах? Чё я делаю не так?
>Чё я делаю не так?
>размер сообщения data = conn.recv(1024
В скольки байтах ты размер высылаешь? Вот столько сначала и принимай, получай свой размер, а потом recv(data_size).
>не реализовано на уровне модулей питона?
Думаю, что всё реализовано. Pyro, например, где-то в интернете промелькнул у меня.
Бля, я уже по другому сделал. Я засунул размер и само сообщение в одно сообщение, но разделил их знаком "/size/". На сервере, то, что перед "/size/" я принимаю за размер сообщения, а то, что после "/size/" - за само сообщение. Вроде работает, пока.
Обиженка. Затроллели.
Нашел https://stackoverflow.com/questions/37059815/reusable-validating-class-attributes
Разобрался в топовом ответе, валидацию примитивных типов (int/str/bool) запилил.
Но как дескриптор для валидации композитных типов запилить?
Тот же лист, причём в нём должны лежать итемы только одного типа.
Нужно как-то ебаться с __getitem__, но я слишком тупой.
Ёбанный рот вашего ООП.
А ведь я всего лишь хочу распарсить xml-дамп одной базы данных. С валидацией хуйни которую я оттуда достаю.
Уже третий раз переписываю наверное, потому что прошлые разы получалось говно с тоннами дублирования кода.
Как делать поиск по РЕЗЮМЕ?
Мне надо чтоб апишка отдавала набор резюме по ключевым словам, которые я введу.
Не нахожу поиска по РЕЗЮМЕ в документации.
Помогите понять насчет vk_api https://github.com/python273/vk_api:
мне нужно собирать данные о участниках других групп и постить в свою группу.
использую:
[CODE]
session = vk_api.VkApi(login='логин', password='пароль', scope='offline')
[/CODE]
для постинга в группу авторизовываюсь по токену:
[CODE]
session_group = vk_api.VkApi(token='токен из овер 30 символов')
api_group = session_group.get_api()
resp = api_group.wall.post(owner_id=group_id, from_group=True, message=text, attachments=media, signed=False)
[/CODE]
Токен получил в админке группы
Получаю: vk_api.exceptions.ApiError: [5] User authorization failed: method is unavailable with group auth.
Никогда не понимал этой ебучей апи вкшечки, что я делаю не так анон?
Бля, анон помоги, очень нужно мне создать окно, которое можно заполнять текстом.
очевидно использовать не Label, а что-то связанное с Text не знаю в qt нихуя, и запретить его редактирование
На уровне протокола http реализован параметр Content-Length.
Решил. Использую авторизацию по логину\пассу, но в scope дописываю wall:
session = vk_api.VkApi(login='login', password='pass', scope='offline, wall, messages', app_id=12345, client_secret='secret')
Отрыл в документации QTextEditor и поставил флаг "Чтение онли".
Таки заработалодаже с полосой прокрутки!, но мне всё равно не понятно, нахуй тогда нужен Label?
Торнадо подойдёт? И какие в обще перспективы у этого фреймворка
Нужно проверять полученные, на наличие в истории, хранить остальные данные необязательно.
Что лучше использовать Redis? CSV? pickle? Просто файл?
id можно сортировать, но приходят не по возрастанию
Я уже давно прикрутил себе редис и печалей не знаю, нахуй мне дб не нужна чтобы хранить одно значение по одному ключу.
о том же думаю, бро, еще искал про Berkeley DB, она типа в файле хранится, но нихуя не понял
буду ставить редиску
Ну смотри по своим нуждам, я склонился к тому, что мне достаточно хранить одно значение последней запощенной картинки, поэтому мне редис очень подошел.
мне нужно хранить последний id 1-сущности и каждый уже использованный id 2-сущности
Вот я и решаю где быстрее будет со временем искать id2, дабы не заносить повтор.
К слову, я тут подумал: попытка создания записи с уже существующим id, будет быстрее чем поиск этого id?
База со временем станет ооочень огромной
Достаю из базы:
articles = Article.objects.all()
Есть переменная с html кодом:
html_tpl = """
<body>
<h1></h1>
</body>
"""
Можно ли полученное дерьмо из базы впихнуть в эту строку и отдать в браузер? *.html файлы не используются
Или pm2 хорошо подходит для моих целей?
даунич блять, чем она проще то?
Попробуй сначала его, потом PyQT например.
Второе имеет сигналы и прочую более удобную хурму.
Используй первое для говноподелок которым вот прямо нужен интерфейс, но их никто не увидит.
def get_user_id(user_name)
if str(user_name) == str("user1")
user_id = int(1)
if str(user_name) == str("user2")
user_id = int(2)
if str(user_name) == str("user3")
user_id = int(3)
return user_id
Такую-же хрень написал для обратного сопоставления.
Да, str и int тут наверно лишние, пререстраховывался.
Но вопрос не в этом, вопрос в том, как убрать из кода имена пользователей и id? Думаю в текстовый файл писать при добавлении новых (сейчас все кто есть прям так в коде и перечислены).
Что применить для чтения логина и id из текстового файла, с поиском по разделителю (пробелу), и перебором этого файла построчно?
фикс.В третей строке подставляешь path, конечно же
то что надо, спасибо.
with open('file.txt', 'rt') as file:
дальше гугли, для разделения
'строка с разделением - через тире'.split('-')
Но ты очень говнокодишь, почитай доки джанги\фласка, что там у тебя
А создавал ли ты виртаульное окружение? а тот ли ты питон используешь, для которого установил Pillow?
python --version
чтобы узнать версию (в консольке где запускаешь питон).
Проверь путь до интерпретатора python, там где запускаешь свой говнокод.
Прочитай хотя бы это http://python-lab.blogspot.ru/2012/07/virtualenv.html или https://eax.me/python-virtualenv/
на сам интерпретатор никто нихуя не ставит
А чуть ниже начинаются недокументированные сочетание 'rt' 'w+b'. Мне надо бинарное чтение/запись.
С какого перепугу? Это просто формочки-кнопки. Используй requests или что помощнее.
with open(full_path_to_file, '+') as f:
ValueError: Must have exactly one of create/read/write/append mode and at most one plus
Ну прост там в самом тулките есть работа с http, наверно на питон порт этих функций не завезли. Тогда буду тыкать пробовать в pycurl.
http://docs.wxwidgets.org/3.0/classwx_h_t_t_p.htmlЩ
Я не вкатывальщик, а полноценный сениор байтослесарь, которому, вероятно, придется немного питонить.
системщик что ли? Так есть для вас книги по питону, чисто по скриптам автоматизации и тд
Мы тут с аноном обмазываемся PyQt - графическими интерфейсами. Всего пару дней назад начали. Можешь присоединятся. https://youtu.be/e5PBUFrSKgQ
Подскажите по чтению больших файлов.
Есть CSV, около 100 Мб, несколько десятков тысяч столбцов.
Комп Windows 10x64, Python 3.5. Памяти свободно около 4 Гбайт.
Команда:
p1=pandas.read_csv(baza_path, usecols=['id','name'], \
dtype={'id':'int32','name':'str'}, sep=';', header=0,quotechar='"', low_memory=False)
Ошибка pandas.io.common.CParserError: Error tokenizing data. C error: out of memory
Как можно прочитать такой большой файл (что мне желательно сделать, но необязательно - можно по столбцам) ?
Я вообще правильно делаю для чтения только нескольких столбцов ?
почему тогда не читается ? Дело не в памяти ?
Pandas говорит поставить low_memory=False или прописать dtype, что я и сделал.
Да я без понятия, думаю в будущем начать тыкать pandas , не я смотрел конференцию на ютьюбе, там мэрлин рассказывал, как они у себя на сайте тонны csv файлов обрабатывают Пандасом, и файлы по 1gb и больше
Мать твою, ты читать текст ошибки умеешь? "r+" туда пиши, мудила.
там нет работы с сетью потому что оно там не нужно
Справедливости ради, им стоило бы добавить в таблицу пару разделителей, чтобы было очевидно ясно, какие из знаков можно сочетать, а какие взаимоисключающие.
эффективен для решения какой задачи?
Вперёд, это же опенсурс.
есть в общем скрипт, который вызывает джанга, который стучится на 5 разных url и берет оттуда данные
работает медленно, я запускаю в виде пик1
если я запускаю джангу вот так
gunicorn bot.wsgi --log-file=logs/gunicorn_log.txt --bind=127.0.0.1:8000 --workers=3 &
то сообщения от логгера приходят и все норм, если же я стартану джангу и выйду из сессии терминала
gunicorn bot.wsgi --log-file=logs/gunicorn_log.txt --bind=127.0.0.1:8000 --workers=3 & exit
то логируется [Errno 5] Input/output error
кто нибудь может подсказать почему так?
Если все свое свободное время посвятить и читать вникая сосредоточенно, то 1,5-2 месяца уйдет.
https://github.com/pycurl/pycurl
UPD на дистрибтиве python 3.5 x32 не работает, на x64 всё ок
To avoid exit signals propagating to child processes of the terminal and shell, run the command with nohup, i.e.:
nohup cmd &
Кейлоггеры пишешь, пидор? В операционках есть всякие registerGlobalHotkey или вроде такого, специально для хоткеев даже когда приложение вне фокуса.
Не вижу смысла в таких толстых книгах. Те кто их советуют - часто даже половины не прочитали. Лучше больше практикуйся.
Нахуй вы эти талмуды читаете, когда есть няшная официальная дока https://docs.python.org/3/tutorial/index.html , которую можно осилить дня за 3? А то и вообще просто начать усиленно практиковаться обращаясь к гуглу/докам/стаковерфлоу когда упёрлись в конкретную проблему?
Двачую. Заебали эти мамины советчики советующие это говно на 1000 страниц.
ты уже используешь лучший инструмент в мире, как можно думать о переходе на что-то другое?
лучшая
>Я же не тупая пидорашка, чтобы таким заниматься.
Что-то проиграл с тебя. Иди скачивать репаки сралкера, школотрон.
pass is a null operation — when it is executed, nothing happens. It is useful as a placeholder when a statement is required syntactically, but no code needs to be executed
Это же python тред, а не тред мамкиных психиатров/грустнотред, чтобы тут ныть о своих проблемах.
Помогите разобраться с map. В примере:
def f(x):
return x*x
if __name__ == '__main__':
p = Pool(5)
print(p.map(f, [1, 2, 3]))
но в моем случае f имеет дохуя аргументов, как это смапить?
Спасибо двач, чтобы я без тебя делал:
import functools
map(functools.partial(x, arg1='bla', arg2='blah'), [1,2,3])
socket.timeout разве не для этого?
name=input("Как тебя зовут?\n")
print("Привет," , name)
second=input("А какая у тебя фамилия?\n")
print("Теперь я полностью знаю твое имя, ", name, second)
Нахуя нужны дескрипторы, если можно переопределить getattribute, setattr и delattr?
keep it up!
Дескриптор это пиздатый сахарок. Можешь писать с помощью переопределения getattribute, но будешь выглядеть как обезьяна.
Я так не умею ещё.
А что если я сделаю отдельный поток, который будет слушать клавиши с помощью этого вашего winAPI и в случаи чего генерировать сигнал. Сработает?
То есть технически разницы большой нет и это всего лишь вопрос организации кода внутри класса?
То есть технически разницы большой нет и это всего лишь вопрос организации кода внутри класса?
Qt seems to don't support global shortcuts. Check out this project https://github.com/FunkMastaZ/pyhk3
есть бот с keyboardButton'ами нужно после заполнения некоторых данных, чтобы пользователь ввел inlineQuery то есть напечатал имя бота @botname но только после определенной стадии, я могу как-то послать из бота сообщение самому себе с таким текстом
@botname list_news?
то есть мне не нужно чтобы пользователь после нажатия start мог выполнить @botname list_news, а только, после нажатия на кнопку ( не инлайновую ) ввести имя, ввел имя и потом только смог набрать @botname listn_news
а желательно вообще, чтобы он не вводил эту строку, то есть после ввода имени в поле сообщения бы само писалось @botname list_news и выдавался бы список новостей?
Скорее всего этот pyhk не сможет отследить нажатия дополнительной кнопки мыши. А мне нужно именно это.
остаток от деления
делишь например 20 на 3 остаток 2 почтому что
ближайшее число которое делиться без остатка 18
Поясните по конструкциями
Смотрю пример
а в комментах пишут, что лучше не последовательно открывать, писать и закрывать, менеджеры контекста в виде:
with open(filename, 'w') as f:
__f.write('hello world')
Почитал про это, например, тут
https://lancelote.gitbooks.io/intermediate-python/content/book/context_managers.html
Если у меня между открытием файла и записью довольно много строк, например, строки для записи создаются в цикле, то это же неудобно, весь этот код будет в отступе после with open..
Посмотрел тут вот этот диск.
https://yadi.sk/d/tArKKuQu3Kejuq/Python
Ничего аналогичного вроде не нашёл. Быстро пролистал и всё. Да, анон, я решил начать кодить. Понятное дело, что мне пока что лучше не соваться во всякие сложные штуки вроде баз данных, сетей и прочего, а то очень быстро забью. Хочется порешать что-то простое для мотивации к дальнейшим действиям.
Пикча для привлечения внимания.
Заранее благодарствую.>>26151
Мне нравится.
Да, конечно.
https://docs.python.org/3/howto/descriptor.html#invoking-descriptors
Ну вот же всё написано, ну хули такой назойливый?! В питоне дохуя вещей можно написать на самом питоне, но зачем это делать если это: медленнее, сложнее, уродливее?!
ладно, кажись заработало, спасибо тебе, анон.
Но pyHook всё равно не ставится. Надеюсь хоткей сделать можно и без него.
Сука, ну что за хуйня, пытаюсь установить PyQt5, и, хуяк, ошибка:
Could not find a version that satisfies the requirement sip<4.20,>=4.19.4 (from PyQt5) (from versions: )
No matching distribution found for sip<4.20,>=4.19.4 (from PyQt5)
Хули он блядь хочет? Нахуй ему это нужно? Почему в ебучим линуксе я ввёл одну сука ебучию команду в терминал и у меня всё само установилось, а в ёбанной винде я уже полчаса не могу поставить ебаный Qt?
Бля, лучше бы мог установить PyQt5
Можно ли как-то в самом Atom text editor запускать программу(конечно, мои пару строк кода прогой не назовешь,но все же)?
Зачем? Настрой лучше десктоп на быстрое переключение между воркспейсами, чем ебаться с кучей багов и тормозов в этих запускалочках.
И да, я вообще нихуя не знаю. Начал буквально пару дней назад с абсолютного, как жопа в космосе, нуля.
Жру сейчас Python for Everybody, там дядя сказал что очень желательно работать через редактор, т.к. понятней новичку. Атом он посоветовал.
3.7 ещё даже не вышел, там только альфа-превью-ещёнеготово-нетрогайэто.
>>26242
Запускай из терминала/cmd/что там у тебя ещё. Можешь хоть прямо из браузера запускать свои хелловорлды http://pythonfiddle.com/
Это падаван.
Ну да,я так и делаю. В атоме пишу код, сейвлю файл .py на раб стол,чтоб было быстрее, и из /cmd запускаю этот файл.
Ты это имеешь в виду?
И хули блядь делал? Я когда качал питон, я просто скачал самую последнею версию, что была на сайте, а теперь оказывается я блядь Qt на неё поставить не могу. Чё мне теперь 3.5 как то нужно накатить?
Попробуй открыть cmd, а не щёлкать ярлыки каждый раз. Первый раз придётся набрать python hello.py, но потом можно просто стрелку вверх нажать и набирать заново не надо. Всё достаточно быстро, и не нужно readline в конце программ вставлять чтобы окно cmd не закрывалось раньше времени.
Блядь, а что будет, если я сразу два питона установлю - 3.7 и 3.6.4? Как указывать, какой именно запускать? И как указывать, для какого питона искать модули? Или мне 3.7 тогда вообще к хуям снести надо? У меня тогда все скаченные для него модули перестанут работать и мне всё заново придётся качать для 3.6.4?
Как брать участника\участников диалога\беседы, если для этого существуют разные методы?
Создал два класса: MessageChat, MessageDialog, которые будут выполнять разные запросы на get_members
Но как правильно разделять сообщения из чата и из диалога? Передавай в конструктор сырой dict? Проверять dict условием?
Да. Только у меня линукс и фреймовый оконный менеджер. Попробуй ещё ipython, pdb/ipdb, разработку через тестирование (TDD).
Это все редакторы типа атома? Быстро прогуглил, мало что понятно.
Я,считаю, пока рано, питон совсем почти не освоил.
Ну. то есть, у меня реально нулевой уровень, никогда не кодил, и не увлекался.
Хули ты несёшь, поехавший?
Слегка нудно и затянуто, зато разжёвывает так, что даже тупень Васян поймет.
pip3 freeze > requirements.txt
переустанавливаешь питон
pip3 install -r /path/to/requirements.txt
блять уже сам запутался.
Кароче есть vk_api.VkApi и vk_api.Session
вторую я получаю методом auth_from_file() свой-говнокод, потом вызовом session.get_api() получаю объект vk_api.VkApi
Как получать посреди кода получать только одну инстанцию, без новых авторизаций?
Хотя я понял, ну вот я и получаю этот синглтон когда вызываю session.get_api() . верно ведь?
Теперь сделаю session глобальной и посреди кода буду дергать этот метод
порой надо попытаться ответить самому себе на вопрос
Понятно? Нравится? Работает? В чём твоя проблема тогда?
>нудно и затянуто
Вот и все претензии скорее всего.
>В чём твоя проблема тогда?
Если тебе бесплатно предлагают выбрать мерседес и ладу, то что ты выберешь? Хочу узнать, почему многие считают, что Лутц = лада, и что я не пропускаю книгу лучше.
Ну ты совсем прям каждую мелочь хочешь сэкономить. Пока будешь думать какую книгу прочитать уже мог бы взять и прочитать. Другое дело, когда в книге что-то уже устарело или автор пишет хуёво, тогда надо дропать.
Ну не то чтобы хочу сэкономить. Просто у Лутца только "Изучаем Python" 1200 страниц. "Программируем на Python" еще столько же.
И может я тупой что вероятнее всего, но я не очень представляю параллельное вкатывание во что-либо, пока не осилю хотя бы эти томики.
Читай и не парься. Я вообще сейчас четыре книги на декстопе открытыми держу и ничего. Ещё на мобиле лежит "Яма" Куприна. Читай и пробуй в этом нет ничего сложного. Если не нравится - дропай, потом всё равно вернешься или найдешь книгу лучше.
Python и впрвду говно, лучше переходи на другой язык. Удаляй пичарм и больше не пиши сюда.
ImportError: DLL load failed: Не найден указанный модуль.
Как это пофиксить?
Пиздец. Вы заебали уже, как на подбор, полтреда вопросы про несработавший импорт.
https://docs.python.org/3/tutorial/modules.html#the-module-search-path
>пучарм не пишет в выводе красным, в какой строке и функции ошибка ?
Пишет далеко не всегда. Пикрилейтед пример, когда не найдены вызванная функция. Приложение крашится, в консоли белым по черному сказана ошибка
>NameError: name 'add_metadata' is not defined
а в пичарме - хуй.
Как блядь криво? Я установил через pip install pywin32. Можно как-то менее криво установить? Версии питона и pywin32 совпадают, разрядности тоже. Что ещё может быть не так?
>ImportError: DLL load failed: Не найден указанный модуль.
Догадка из далека. Они скомпилены разными версиями компилатора. обрати внимание на версию там например VS9 или Visual Studio 15
>Питон и модуль
Например, да. Делать в таких случаях - перекомпилить самому из исходников. Но это вариант для пердоликов на линуксе. На винде это значит ставить MS Visual Studio (~3GB download) и ебаться. Проще тогда уже в Visual Studio начать учить язык поудобнее C# .NET.
Сделай
import importlib
print(repr(importlib.util.find_spec('pywin32')))
и запости сюда. Если None, то питон тупо не нашёл модуль и ты криворукий мудила, например pip из другой версии питона запустил. Если модуль есть, то капай на голову мейнтейнеру за кривые колёса.
Блядь, это тогда мне всю программу переделывать с нуля, а она уже почти готова - нужно только как то хоткеи реализовать
Разве оно не вы автоматически добавляется в PATH при установки через pip? Все остальные модули, которые я ставил ничего кроме установки не требовали
вообще-то должно, да, но кто знает, какой pip ты использовал, каким питоном и где это всё запускаешь
ПЕРЕКАТ ПЕРЕКАТ ПЕРЕКАТ ПЕРЕКАТ
ПЕРЕКАТ ПЕРЕКАТ ПЕРЕКАТ ПЕРЕКАТ
https://2ch.hk/pr/res/1126456.html (М)
https://2ch.hk/pr/res/1126456.html (М)
https://2ch.hk/pr/res/1126456.html (М)
>строки для записи создаются в цикле, то это же неудобно, весь этот код будет в отступе после with open..
вынеси в функцию
так ты boards.views.py показывай, нах ты urls.py принес?
Подсобите вкатывающемуся. Работаю с Django 1.8(т.к учу по Django By Example). Запоролся. Код весь из учебника
1) вместо названия поста, так как введено в поле в title, в админке выдаёт Post Objects
2) При создания полей в админке для фильтра, его тупо нет 2 скрин как должно быть, 3 скрин как есть. Не выводит ни колонку фильтрации, ни поиск, ни название поста.
https://ideone.com/5Gjd8w это код models
https://ideone.com/WtXufb это код admin
всё, разобрался
Искал библиотеку для отлова нажатия горячих клавиш. Нашел pyhk, но что то установить ее не выходит, она зависит от PyHook3, а после установки PyHook3, все равно не видит библиотеку и из-за этого отказывается устанавливаться. Помогите пожалуйста.
Это копия, сохраненная 9 марта 2018 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.