Это копия, сохраненная 30 октября 2015 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Прошлый: >>537855 (OP)
Слоупокам напоминаю, что в 2020 заканчивается поддержка второго питона и пора бы переходить на третий
http://legacy.python.org/dev/peps/pep-0373/
Есть две версии текста, которые будут браться из базы и отображать на странице. Старый и новый текст. Новый сравнивается со старым и показано где убрано, и что добавлено: например, точно как в вики или на гитхабе. Как это сделать?
import requests
r=requests.head('http://krautchan.net/files/1442487814001.jpg')
print(r.headers['content-length'])
print(r.headers['last-modified'])
Благодарю.
Ты дурачок? Что ты делаешь в этом треде?
Мудило, ты опять выходишь на связь?
Заебись!
Приятно, ведь он не совпротивляется.
Есть еще что-то подобное? Чтобы теория с практикой.
Попробуй сам себе задачки придумывать и решай их. Гугл в помощь.
В стандартной библиотеке тоже есть difflib.
Аналогично, начал и понимаю процентов 50%.
Правда я старый и гуманитарий в добавок. Но сдаваться не хочу.
Прочитав 1 раз не каждый сразу поймет, нужно перечитывать по несколько раз, все так делают.
Ну, к слову, nonlocal и global — это больше сигнал о том, что что-то не так в ОРХИТЕКТУРИ.
https://play.google.com/store/books/details/Al_Sweigart_Automate_the_Boring_Stuff_with_Python?id=UEu0CAAAQBAJ
Вообще охуеть. Примеры очень разносторонние, дают понимание что вообще можно сделать. Отталкиваясь от них легко найти реальные задачки в окружающем тебя мире и порешать их(придется гуглить, но примерно что делать ты будешь знать).
Приглядываю модули корзин.
https://www.djangopackages.com/packages/p/django-shop/
http://cartridge.jupo.org/
Ну и так далее. Кто реально работал/сталкивался? Запросы скромные - корзина, чекаут, более-менее удобная доработка напильником.
Осваивай консольку и баш. Хуле там запускать. python lol.py
PyCharm.
Я знаю, но в таких ситуациях лучше использовать мутабельные объекты. Это очень редкая ситуация, когда тебе надо присвоить имени другой объект и скорее всего это можно сделать по-другому, более элегантно.
atom
Мажорные версии, между их релизма год прошел.
Большое спасибо. Надеюсь несложно будет и это объяснить.
Премного благодарен. Последний вопрос. Зачем устанавливать модули через pip, если потом python3 их не находит?
https://docs.python.org/3/library/sys.html#sys.path
Питон берет пути к библиотекам из sys.path. Либо устанавливай их туда, где питон их ищет, либо добавь новый путь через PYTHONPATH
А нахуя оно? Нет, здорово конечно провести детальный lint, но рантайм игнорирует же.
Тогда можно сразу на Cython попробовать писать.
Луче python3 -m pip install ...
>>545933
Нинужно, удваиваю >>545951, ide должны страдать. вообще, нахуя оно нужно? Это как докстринги для сфинкса. Хотя этим гвида занимался, вообще непонятно нахуя, калл же полнейший. И вся суть динамики убивается, я хочу передать в функцию свой FakeInt, а мне ide пропердит, что я не то подсовываю.
Потому что говно. http://pastebin.com/92e6npXV По 9 строк на каждое объявление? Спасибо, нахуй.
Передрочишь - пистон отвалится.
Перспективы - Варгейминг и многое другое.
Нашел как оно правильно называется - https://en.wikipedia.org/wiki/Gradual_typing
Ебать я умный
Смотри на mypy
Короче можно будет сделать проверку типов или компалятор, сам cpython использовать их не будет, но другие интерпретаторы питона или библиотеки для проверки типов - будут. Возможно jython или ironpython будут.
Понятно.
Регулярочки для быдла, очевидно же. Они не заменят нормальный парсер.
lxml, html5lib
Если с экселем я знаю что делать, то с этим полем ебаным даже не знаю что предпринять акромя pygame что является очень унылым. Варианты?
Вот открой сорцы своих нормальных парсеров и посмотри, как там регулярочкой твое говно парсится. Быдло.
Ты дибил?
https://github.com/html5lib/html5lib-python/search?p=2&q=re+language%3Apython&type=Code&utf8=%E2%9C%93
Максимум 10 регулярок и только потому что они ультрапростые. Сам html приводится в вид дерева, в этом смысл. Готовое отдроченное решение? Нахуя оно нам надо, лучше напишу ещё одну регулярочку!
>>546686
Вы короче оба дауны.
Регулярочка нахуй не нужна для пропуска через неё всех ебаных данных. Очевидно для этого нужно изначально написать парсер, которые пиздит например все элементы одной группы, а потом регулярочками как напильником искать нужные тебе конкретно вещи.
Готовое отдроченно решение не везде работает, а также не для всех задач нужны. Когда у тебя есть готовые данные в виде например ссылок img src, то нахуй тебе это ебаное дерево?
Узко мыслите пограмисты.
Что-то я тебя не понял. Ты предлагаешь регулярочки, говоришь, что либа зделана на регулярочках и называешь её костылями?
Ебало своё закрой, чтобы тебя не видно тут было.
Я говорю, что использовать либу с деревом для обхода хтмл в ситуации когда нужно просто отфильтровать равносильное уебанство пропусканию сырого хтмл через регулярочку.
pygtk, pyqt, веб морда
Когда-то писал gui морду для форума и beautifulsoup ощутимо тормозил.
Переписал всё на регулярочках - стало намного быстрее.
Это понятная цепочка, она не противоречит тому, что я писал. Хотя не очень понятно что там может тормозить на форуме-то, там же просто текстовые поля.
beautifulsoup просто очень тормозная либа, хоть и удобная.
вроде как другие парсеры пошустрее.
soup умеет использовать другие либы: lxml/html5lib, достаточно чтобы они были установлены.
Нахуй мне читать мой же пост? Парсер джоя я почти захуярил, пикабу содержит в себе какой-то дичайший говнокод хтмловский. Такой вырвиглазный пиздец что хочется просто уебать лопатой фронтенд разраба и верстальщика.
Я и сам не фанат регулярочек. Где-то они к месту, где-то не очень. И поддерживать их тяжело потом. И легко ошибиться.
Но иногда без них никак. И быстро, да.
хз
python manage.py schemamigration core --initial
Сделал? Что за таблицы для south? south_migrationhistory?
schemamigration говорит, что не таблицы south_migrationhistory. Вот она и не создается, да. Если есть время и желание помочь пиши на фейкопочту feikomilce.anonov@yandex.ru
Попробуй сделать вручную
CREATE TABLE "south_migrationhistory" (
"id" serial NOT NULL PRIMARY KEY,
"app_name" varchar(255) NOT NULL,
"migration" varchar(255) NOT NULL,
"applied" timestamp with time zone NOT NULL
)
;
Хотя syncdb должно это создавать.
И, кстати, а сами миграции у тебя уже были?
Или это новый проект? Если новый, то почему ты используешь south, сейчас же миграции встроены в джангу в новых версиях?
Можно файлик с кодом? Давно хотел прикрутить Джой и Пикабу к боту в телеграме
Джанго.
Что ты там замазал питухон, anon@dbpp ? Уже лезу подключаться.
Старательно набрал пример из книги Доусона. Сверял при этом с англоязычным оригиналом книги. Проблема такая: программа совсем не умеет блокировать победные ходы противника. Хотя по идее должна это делать.
http://pastebin.com/CKMNGZeT
Взял для сравнения оригинальный англоязычный код программы : http://courses.ischool.berkeley.edu/i90/f11/resources/chapter06/tic-tac-toe.py
Отрыл оба варианта в meld, но не сумел найти логических различий.
Да, работает. Последовательность действий пользователя воспроизвожу одинаковую. Поведение программы разное.
Спасибо. Пофиксил отступ в функции winner(). Но баг остался.
Точно! Спасибо.
консоль в твоей ёба ide не робит юникод по полной
http://pastebin.com/YrS8LbVh
ide для работы когда, хороша, а учиться нужно без ide
Собираю фотки кошек с выразительными мордами вместо смайликов. Особенно люблю сумасшедшие морды.
Учиться надо у доски, мелом шкрябая код из тетрадки и построчно объясняя преподу что там происходит.
Что так многие хотят всех пересадить на p3? Ты ведь хуйню ему насоветовал ещё и запутал.
Дело не в консоли, а в том что он делает print list и печатается repr элементов
Если бы он написал
print advice[0]
или там
print ' '.join(advice)
Всё бы работало
>>547057
> Что так многие хотят всех пересадить на p3?
Недавно начали учить питон и начали с трешки и у них бугорт что почти везде в продакшене двойка
начинал учить когда питон был 1.6
>> Всё бы работало
То что на пике, не могу назвать "Всё бы работало".
>> Если бы он написал print advice[0]
не падало бы только в пе3, а пе2 падало с "UnicodeEncodeError: 'charmap' codec can't encode character u'\x97' in position 21: character maps to <undefined>"
>>Недавно начали учить питон и начали с трешки
А учить питон лучше с ассемблера
> что это?
умвр - "у меня всё работает".
> Но с кубиком то
Проблема в том что этот кубик там есть. Может ещё и другие символы попадаются какие-то подобные, их тоже все по одному заменять?
ДотрЁхал ты меня буду перекатываться, может быть. Спасибо что разобрал всё мною написанное.
А ещё pip под двойкой на винде падает из за юникода в доменном имени машины.
> на винде
Там много чего ещё работать не будет, в чем проблема поставить линакс на виртуалочке или vps?
Да вы заебали. За несколько лет на тройке ни разу не было так, чтобы под виндой что-то не завелось. Все норм работает. А если бы было не норм, то нахуй нужен такой питон.
>То что на пике, не могу назвать "Всё бы работало".
Это норма, просто в большинстве шревтов END OF GUARDED AREA выглядит как тире, а в этом - нет. Вообще для тире другой символ так-то, сайт сделали мудаки.
>не падало бы только в пе3, а пе2 падало
Юникодная строка же, системной кодировкой закодируется и выведется нормально. Другое дело что почему-то lxml возвращает в одном питоне строку, а в другом список с этой строкой.
>>547057
Потому что некрофилия это зашкворно.
Тут такая проблема. Есть код из Саммерфилда(Глава 6):
class Point:
def __init__(self, x=0, y=0):
self.x = x
self.y = y
...
горсть свойств
...
class Circle(Point):
def __init__(self, radius, x=0, y=0):
super().__init__(x, y)
self.radius = radius
...
горсть свойств
...
доктесты
В пайчарме доктесты работают, и сам я классом могу нормально пользоваться.
В эклипсе вылазит вот такая поебота:
Traceback (most recent call last):
...
c = Circle(5,1,1)
..., in __init__
super().__init__(x, y)
TypeError: super() takes at least 1 argument (0 given)
ЧЯДНТ? Эклипс как-то не так настроил, что ли? Помоги, анон, с меня как обычно.
Тут такая проблема. Есть код из Саммерфилда(Глава 6):
class Point:
def __init__(self, x=0, y=0):
self.x = x
self.y = y
...
горсть свойств
...
class Circle(Point):
def __init__(self, radius, x=0, y=0):
super().__init__(x, y)
self.radius = radius
...
горсть свойств
...
доктесты
В пайчарме доктесты работают, и сам я классом могу нормально пользоваться.
В эклипсе вылазит вот такая поебота:
Traceback (most recent call last):
...
c = Circle(5,1,1)
..., in __init__
super().__init__(x, y)
TypeError: super() takes at least 1 argument (0 given)
ЧЯДНТ? Эклипс как-то не так настроил, что ли? Помоги, анон, с меня как обычно.
Эклипс у тебя второй питон запускает, в котором суперу нужно было передавать хотя бы один аргумент.
Спасибо
Решил теперь, когда курс программирования позади, начать учить язык сам. Выбрал змеюку эту. Скачал книжку Лутца хваленую, мне на голову прилетел тут же гигантский объем теории, еще и так заумно поданной, что я подался на ютюб за простыми лекциями по синтаксису хотя бы. Смотрю эти, тут хоть понятно : .com/playlist?list=PLbKwBvrpogbZfU50rPMmXow3aMFjIw4gk/ Наверняка закидаете говном, но щито поделать?
Подскажите, где найти самые простые задачи, а то везде натыкаюсь на что-то очень сложно (ну или я совсем тупой). Или же вшибать в голову Лутца, покуда не станет понятно?
Шапку читал.
Спасибо за помощь заранее.
На закуску мой великий препод, йоба изобретатель, которого выгнали в этом году, лол. https://www.youtube.com/watch?v=9_G9bfU5GfU
Ахаха ткнул видео
"мы изобрели наручный джостиковый манипулятор и заняли первое место по житомирской области"
Flask'оводы есть тут? Читаю Flask Web Development, в шестой главе была реализована отправка сообщений на почту. Через консоль всё хорошо отправляется, а вот когда запускаю сервер, нет.
Сетаю логин, пароль:
set MAIL_USERNAME=<Gmail username>
set MAIL_PASSWORD=<Gmail password>
запускаю сервер, ввожу имя, приложение его принимает и записывает в базу, при повторном вводе имени он уже будет узнавать имя и писать новое приветствие.
Для отправки сообщений сетаю ещё это:
set FLASKY_ADMIN=<Gmail username>
И вот когда я вот все три хрени засетил, при вводе нового имени фурифокс выдаёт "Соединение было сброшено". Новое имя не добавляется в базу.
DEBUG mode включи, логи посмотри.
Хуй знает насчет фласка но в django лучше складывать письма в базу и по cron отправлять их из другого процесса. Потому что пока твоё ебаное письмо, особенно через сторонний мэйл сервер отправиться клиент будет ждать, сервер будет заблочен да и за ддосить тебя так легко будет.
В django есть готовые решения для всей этой почтовой хуйни.
Ой вей, я таки забыл про debug из-за shell manager, шаблон он не мог найти, спасибо. Правда странно что в книге про эти 2 шаблона не было написано, нашёл их на гитхабе у автора. Вообще книга вроде хорошая, но странная, иногда умалчивает про содержимое и создание некоторых файлов, вот шаблоны нужные для 6 главы лежат в гите для 7-ой.
https://github.com/miguelgrinberg/flasky
А вот это пробовал?
http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world
Многие рекомендуют эту доку. Даже перевод на русский был где-то(на хабре вроде)
Только что понял что это от того же автора.
Пробовал, на openid слился, хотел через его же другую статью, OAuth2 запилить вместо openid и продолжить туториал, не получилось.
Классно, спасибо большое!
https://www.reddit.com/r/beginnerprojects/comments/1bytu5/projectmenu_calculator/
Все мои варианты слишком костыльные и похожи на удаление гланд через анальное отверстие. Я уверен, что есть способ изящно, аккуратно и с минимумом кода написать эту программку.
мимоньюфаг
Пилишь дикт с номерами, названиями и ценами, гоняешь цикл в котором считываешь строчку и вытаскиваешь цены из дикта. В чём проблема?
Жаль, что сейчас дохуя работы и могу только полтора часа перед сном уделять, так бы больше уже знал. Но в целом я в восторге. Также есть уже идея софта, который буду писать для автоматизации своей работы, на ходу рождается куча полезных функций, которые можно там реализовать, уже начал записывать, но еще не понятно как это структуировать, как построить иерархию правильно. У меня по-сути каждая идея - это перепиливание иерархии. Хотя, хуй знает. Скорее всего я еще не имею толком представления о чем говорю и все это лишь догадки.
Возможно подскажите как вы вообще записываете свои безумные идеи, как их структурируете? Понятно, что когда делаете чужую программу - там тз. А своя ведь это постоянный поток сознания и перепилов. То добавить, се. Брать отсюда сюда.
Или там первую неделю записываете все необходимые штуки, вторую структурируете, а третью пишете (образно)?
Когда я начинал кодить частенько писал что-то как придется, а потом переписывал заново. Иногда по 2 раза.
>А своя ведь это постоянный поток сознания и перепилов. То добавить, се. Брать отсюда сюда.
Поумерь пыл, бери что тебе по зубам реально сделать за неделю. Своего рода методология agile при работе в одиночку. Доведи до минимально рабочего состояния, а потом навешивай свои безумства небольшими порциями с релизами каждую неделю. Рабочий прототип сильно приводит в порядок мысли и яснее становятся перспективы и возможные трудозатраты.
[CODE]#!/usr/bin/python
import cgi
import cgitb
cgitb.enable()
someString = ""
form = cgi.FieldStorage()
def drawAdditionForm():
\taddForm = ""
\taddForm += "<form action=\"params.py\" method=\"POST\" >"
\taddForm += "<table border=\"0\">"
\taddForm += "\t\t<tr><td class=\"ralign\">Link:</td><td class=\"lalign\"><input type=\"text\" name=\"link\" id=\"link\" ></td></tr>"
\taddForm += "\t\t<tr><td class=\"ralign\"></td><td class=\"lalign\"><input type=\"submit\" value=\"Add link\" ></td></tr>"
\taddForm += "\t\t<tr><td class=\"ralign\"></td><td class=\"lalign\"></td></tr>"
\taddForm += "\t</table>"
\taddForm += "</form>"
\treturn addForm
def getLinkParams():
\tsomeString = "Message: "
\tsomeString += ", ".join(form)
def ifNoLink():
\tsomeString = "Could not find link"
##############################
if "link" in form:
\tgetLinkParams()
else:
\tifNoLink()
print "Content-Type: text/html"
print "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">"
print "<html xmlns=\"http://www.w3.org/1999/xhtml\">"
print "<head><title>Links</title>"
print "<link rel=\"STYLESHEET\" href=\"style.css\" type=\"text/css\" >"
print "</head><body>"
print "<div></div>"
print "<div></div>"
print "<div>" + drawAdditionForm() + "</div>"
print "<div></div>"
print "<div>"+ someString +"</div>"
print "</body></html>"[/CODE]
[CODE]#!/usr/bin/python
import cgi
import cgitb
cgitb.enable()
someString = ""
form = cgi.FieldStorage()
def drawAdditionForm():
\taddForm = ""
\taddForm += "<form action=\"params.py\" method=\"POST\" >"
\taddForm += "<table border=\"0\">"
\taddForm += "\t\t<tr><td class=\"ralign\">Link:</td><td class=\"lalign\"><input type=\"text\" name=\"link\" id=\"link\" ></td></tr>"
\taddForm += "\t\t<tr><td class=\"ralign\"></td><td class=\"lalign\"><input type=\"submit\" value=\"Add link\" ></td></tr>"
\taddForm += "\t\t<tr><td class=\"ralign\"></td><td class=\"lalign\"></td></tr>"
\taddForm += "\t</table>"
\taddForm += "</form>"
\treturn addForm
def getLinkParams():
\tsomeString = "Message: "
\tsomeString += ", ".join(form)
def ifNoLink():
\tsomeString = "Could not find link"
##############################
if "link" in form:
\tgetLinkParams()
else:
\tifNoLink()
print "Content-Type: text/html"
print "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">"
print "<html xmlns=\"http://www.w3.org/1999/xhtml\">"
print "<head><title>Links</title>"
print "<link rel=\"STYLESHEET\" href=\"style.css\" type=\"text/css\" >"
print "</head><body>"
print "<div></div>"
print "<div></div>"
print "<div>" + drawAdditionForm() + "</div>"
print "<div></div>"
print "<div>"+ someString +"</div>"
print "</body></html>"[/CODE]
А как оценить насколько программа КУЛЛ? По какому критерию.
Бля, ну почему не как в кофейке?! Мне всё равно придётся None присваивать этой залупе. В языках со статической типизацией-то понятно, там надо объявлять переменную, но тут-то, в динамике, сам пёс велел.
Ну и блевотина.
define "неявной"
Чем None в данной ситуации отличается от необъявленной переменной? Исключая опечатки. Я же не предлагаю везде игнорировать отсутствие связи имя-объект, но раз уж для этого зделали оператор, то почему бы не зделать до конца?
сам иди нахуй
ненужная хуйня. впрочем, в божественной двоечке такого говна не предвидиться, у неё стабильный синтаксис и апи. а бета тестеры должны страдать
Легаси закукарекало заместо авроры.
>Чем None в данной ситуации отличается от необъявленной переменной
Вот именно этим и отличается.
На кофейке/жабаскрипте частенько приходится минут 15 тратить на хуйню копаясь в дебаггере. Не обязательно конечно от необъявленной переменной, но из-за подобной хуйни (чаще всего похереный this). undefined становится любимым словом.
После того как я вернулся обратно на питон, ко мне вернулась радость жизни, нормализовался сон, пробудился аппетит, появились деньги и хуй крепко встаёт.
Эээ… Я говорю только лишь о поведении при использовании этого оператора. Всё остальное чтобы осталось как было. Хотя, с другой стороны в __init__ такое поведение лишь мешает. Может ты и прав.
def pop(self, x=-1, y=-1):
if x==-1 or y==-1 :
print "No args"
else:
print "Args: %i, %i" % (x, y)
o.pop() #No args
o.pop(1, 2) #Args: 1, 2
Но колхоз же, как по уму делать?
Да почти также, ставят None или дефолтное значение. Если у тебя ничего умного по отсутствию параметров не происходит, тогда вообще убери дефолтные значения, пусть исключение возникнет.
> a = []
> map(a.append, [1, 2, 3])
> a == [1, 2, 3] # True
А в третьем надо делать list(map(a.append, [1, 2, 3])). Быстрое гугление не помогло, да и спать собираюсь. Как добиться в третьем такого же поведения, как во втором?
Итератор он по сути возвращает. Это не значит, что он ненормально работает - так память экономится и всё быстрее? работает.
Да.
a+[1, 2, 3] создает новый список.
a.extend добавляет элементы в уже существующий.
a+=[1,2,3] впрочем тоже
Охуеть пацаны.
т.python2-боярин
Залезь вовнутрь, у ей там неонка лок. Залочь его. Только почему не обернуть её в свою Queue с локом?
Я понял.
Почему просто не делать в цикле обычном что-то со списом?
map тут говнокод если честно. Я раньше любил такое тоже, но потом вырас и стал писать попроще.
Ну делай list(map()) если оче хочется.
Да я собственно ради интереса больше. Переделал в генератор списка и не выпендриваюсь.
Остальные должны тот же лок эквайрить, тогда будут ждать, пока этот не отпустит. Но вообще, ты хочешь, похоже, семафор.
вы все ебанутые дебилы.
нормальный разбиратор xml/сломанного_html внутри не должен использовать регулярки ни на каком этапе. там осуществляется _синтаксический разбор_ по классическим алгоритмам.
Какая разница, если ты также будешь проверять каждый символ на a-z?
Помогите сделать красивую конструкцию для перебора типичных возможных путей элемента. Чот не могу сообразить ничего, кроме
try:
h1 = g.doc.select('/html/body/bla-bla-bla/h1').text().encode('utf-8')
except:
try:
h1 = g.doc.select('/html/body/hui-pizda/h1').text().encode('utf-8')
except:
try:
h1 = g.doc.select('/html/body/jigurda/h1').text().encode('utf-8')
Но по-моему, должен быть более элегантный способ
алсо, для собсно парсинга юзаю grub
имеется ввиду лестница из вложенных одна в другую конструкций try-except
Задачка по информатике: Напишите программу, которая вводит натуральное число N и выводит первые N чётных натуральных чисел.
Решение есть, но я чувствую, что оно убого до крайности. Можно ли его элегантно преобразовать при помощи while и if, без каких-либо встроенных функций?
while True:
____x = int(input())
____z = x
____for k in range(1, x*2+1):
________if k % 2 == 0:
________if z > 0:
____________z -= 1
____________print(k)
Еще один нубский вопрос: в вычислениях стоит использовать дробь (1/4) или floating point число (0.25)? Понимаю, что разница вряд ли ощутится, но что является правилом хорошего тона?
Думал, что само получится.
>>548711
Мне просто хотелось чтобы все треды писали в одну очередь свои логи, а я бы потом их сохранял куда нибудь. Вот упрощённый пример того что я делаю. Не идеально, иногда порядок сбивается, но я поправлю.
http://ideone.com/XmIwkF
Только-только начал python смотреть. Подскажите как в вот таком списке
[1, 1, 1, 1, 1, 1, 1, 0, 0, 0]
находить три подряд идущих единицы? В голову приходит только в цикле смотреть i, i+1, i+2, но что-то по моему это не то.
О, круто, спасибо.
Мед-лен-но, выполняешь три прохода вместо одного
for url in list_of_urls:
....try:
........h1 = ...
........break
....except:
........continue
else:
....# nothing found
>Еще один нубский вопрос: в вычислениях стоит использовать дробь (1/4) или floating point число (0.25)?
Если нужна точность, то fractions или decimal.
Зделай отдельного воркера, который забирает из очереди объекты и пишет их в лог. Нахуй наследоваться от очереди?!
counter = 0
for x in l:
....if x == 1:
........counter += 1
....else:
........counter = 0
....if counter == 3:
........yoba!
Изящно получилось, спасибо, а я и не подумал об этом.
Я так понял, что надо в первой строке условие, чтоб ответ был больше 5, а во второй, чтоб он был меньше 5. Но почему оно не работает?
Да, и что значат цифры в скобках в строках принт?
Так у меня цикл перебора УРЛов остановится по break при первом же найденном заголовке.
Тут скорее
try:
h1 = g.doc.select('/html/body/bla-bla-bla/h1').text().encode('utf-8')
continue
except:
pass
g.doc.select возвращает исключение, если не удается найти элемент. Мне нужно чтоб я мог нахуячить несколько селекторов и если первый сработал, то переход к следующему УРЛу, а если вызвал исключение, то пробуем следующий селектор.
Просто эти задачки были до этой абсолютно про другое, лол. И def, как и этих цифр в скобках, раньше не было и объяснений, че это, не дали. Потому и туплю, как кретин.
Дай, пожалуйста, пример. И что значат цифры после принта?
Просто, если я выполняю первое условие, оно трижды штампует единицу и задача не выполнена. Если второе - трижды -1. Если ни одно - трижды 0.
К примеру, во 2-ой строчке тебе нужно заполнить условие так, чтобы оно проверяло, больше ли answer 5, т.е. if answer > 5: return 1
Принт вызывает функцию (которая выше) с цифрами, указанными в скобках. Это потом будет, дальше по программе
Ой, я просто слепошарый уебок. Я в упор не видел, что answer - переменная, лол. Я задавал свои равенства/неравенства вместо того, чтобы просто написать слово...
Спасибо, уже все увидел.
Тогда вложенный цикл.
Требутеся следующее:
1. Открыть xls файл
2. Найти в нём "темплейтный" лист
3. Наплодить их несколько десятков, копируя форматирование, цвета и всё остальное.
4. Все получившиеся списки должны быть независимы, т.е. изменение имевшейся в темплейте ячейки на одном листе не должно никак влиять на предыдущие.
Делал кто что-то подобное?
Пробовал через:
sheet = workbook.add_sheet(sheet_name)
for key, row in template.rows.items():
sheet.rows[key] = copy.deepcopy(row)
for i in template.cols:
sheet.col(i).width = template.col(i).width
где workbook - это созданная через xlutils.copy.copy копия xls файла, открытого с помощью xlrd.open_workbook(..., formatting_info=True), а template — это один из листов этого воркбука (через workbook.get_sheet полученная).
Всё работало, однако выяснилось, что из-за магической для меня структуры экселя, deepcopy копирует много чего лишнего, в итоге после 5 скопированных листов, вдоволь разогнавшись, память начинает забиваться с молниеносной скоростью (10 листов — 2Гб+).
Если copy.deepcopy заменить на copy.copy, то проблемы с памятью исчезают, однако же попытка изменить имевшуюся в темплейте ячейку приводит к тому, что эта ячейка изменяется во всех листах.
def lol(a, ^, x=4): # вместо ^ звёздочка
__print(a)
__print(x)
lol(2) ok
lol(2, 2) хуй, пока после звёздочки хоть какой-нибудь идентификатор не напишешь.
Отделяет позиционные и keyword (забыл как по-русски) аргументы при определении.
И правда.
def lol(a, ^, b, x=4):
__print(a)
__print(b)
__print(x)
lol(2, 2) # fail
lol(2, b=2) # ok
Учись искать информацию, это тебе очень пригодится, лентяй ебаний.
http://askubuntu.com/questions/279421/how-can-i-install-qt-5-x-on-12-04-lts
Я умею гуглить, просто впадлу сейчас. Спасибо.
У меня подключены всего 2 либы, а уже наблюдается такой пиздец.
[CODE="python"]import scrapy
from scrapy.crawler import CrawlerProcess
from scrapy.utils.project import get_project_settings
from flask import Flask, render_template, json, request[/CODE]
что тебе не нравится? Я не вижу способа сократить импорт еще только если импортировать сразу всю либу. Алсо в некоторых редакторах весь импорт можно скрыть.
Как сделать так, чтобы выполняемые мною скрипты сразу же не закрывались?
input() вконце не всегда срабатывает. Перестал почему-то работать. Энвайромент прописывал.
В чем проблема? Гугл пока не дал толкового ответа, т.к. из-за отсутствия опыта не могу более менее понятно сформулировать для него запрос.
Короче, по простому: как сделать так, чтобы мои скрипты не появлялись на 1ну секунду "досовским" окном и исчезали, а чтобы не закрывались и я смог прочитать что там происходит?
Запускай их через cmd.exe
В общем, пришлось решить топорно: созддать новый лист и просто скопировать туда все иммутабл атрибуты из копируемого, затем насоздавать новых строк, колонок и ячеек и точно так же с ними поступить. Вроде бы всё работает нормально, можно перезаписывать всякие ячейки и так далее. Даже почти работает копирование из другого воркбука — если изменить значение ячейки темплейта до копирования, то ломаются всякие эти sst_idx'ы и некоторые значения снова перезаписываются. Не стал уж разбираться, так как пока такого не требуется.
http://pastebin.com/gUzA8hFc
string.translate(s, table[, deletechars])
Delete all characters from s that are in deletechars (if present), and then translate the characters using table, which must be a 256-character string giving the translation for each character value, indexed by its ordinal. If table is None, then only the character deletion step is performed.
Это такой байтоёбский маппинг из двойки. Как видишь он всё равно в программе ничего не делает, ибо затрагивает только символы \x0 \x1 \x2 \x3
The method translate() returns a copy of the string in which all characters have been translated using table (constructed with the maketrans() function in the string module), optionally deleting all characters found in the string deletechars.
Судя по всему, нет.
Вот тут в примере так же: http://doc.scrapy.org/en/1.0/topics/practices.html
Похуй или все же второй учить?
Последние выходные работаю над платиновой задачей двача - скрапер двача.
Но не всего двача, а только вебм.
Сегодня закончил более-менее работающую версию. Скрипт сразу сохраняет в модель джанги.
Предлагаю скооперироваться и сделать свой проект - хостинг вебмок. Понимаю, задача нетривиальная, но в начале сделаем все в лоб и просто. Чтоб было. Будем брать вебмки с двача, составлять рейтинг, может сделаем статистику. В общем, есть куда развиваться. Потом каждый кто захочет может сказать, что участвовал в опенсорс проекте (не обязательно показывать ту часть, где есть сосач).
Скрипт и технические детали попозже вброшу, если появится интерес.
Ну качественный хостинг видео не так просто сделать. Просто чтобы видео отдавал - ради бога, а если много пользователей? Еще и нетривиальная задача собрать анона в работоспособную команду.
> , а если много пользователей?
Это не проблема твоего приложения вообще. Видео будет отдавать nginx. Если пользователей будет много - ставишь несколько вебсерверов. Балансировка нагрузки между ними есть в самом же nginx http://nginx.org/en/docs/http/load_balancing.html
Чтобы синхронизировать библиотеку файлов между серверами используешь glusterfs.
Или тупо rsync по крону. Или если бы файлы были большими - внутренние торренты, но это заморочка и тут смысла нет.
Короче тут скорее вопрос какой ты хостинг себе можешь позволить и насколько жирный у него канал, чем софта.
Но вообще идея интересная, можно как-нить скооперироваться.
Жыдхаб бы сразу запостил. Так если бы кто даже и захотел, че делать дальше - хуй знает.
Да, в теории то понятно. Я вот сейчас смотрю эти лекции, там примерно это же говорили. http://rutracker.org/forum/viewtopic.php?t=4979701
>>549390
Хорошо.
>>549393
Сейчас запилю чистый репозиторий. Как раз доделывал кое что по мелочи. Вот скрипт.
http://ideone.com/gnMLdU
Вот модификация для сохранения в джангу.
http://ideone.com/3yw9Lh
Попозже расскажу подробнее. Наверно по коду так сразу и не поймешь что там происходит.
Работает под тройкой. Но если поправить super и изменить импорты, скорее всего будет и под вторым. До этого у меня они были настроены, но для красоты убрал.
Ну да, просто была мысль сделать его универсальным, но подводных камней и правда много. То, что я выложил - версия для тройки.
Так это ж парсер только. Он у тебя вроде бы работает уже. Джангу давай. Парсеры в репозиторий туда же сложи.
В джанге пока ничего нет кроме админки. Сам скрипт же качает, записывает лог. А если запустишь второй файл, то сохранит в джангу (которую сейчас выложу). Только админка. Настраиваю репозиторий. Просто не спешу.
https://github.com/aq1/WillBeams
Так, вроде работает. Название рабочее (Will Beams), я не против поменять.
YOBA-VIDOSI-2015
Ну на работе так. Мне по нраву. Каждая модель в своем файле - удобно. Саму папку проекта тоже убираю (зачем она)? Пока все работает отлично.
> зачем она
Она незачем, но вот конфиг ты в отельный package вынес, потому что обычно конфигов несколько - базовый и унасленованные от него обычный, dev-сервер, рабочии локальные копии разработчиков.
Настройки у них разные.
https://docs.djangoproject.com/en/1.8/howto/custom-management-commands/
Я сейчас спать ложусь, не сегодня.
От джанги, насколько я понял, требуется только отображение? Загрузку же можно через urllib запилить. У меня уже есть парсер медиа с двача, например. Нужно только пофиксить иногда возникающую проблему с cloudflare.
мимотреднечитал
>>549460
Скачиватель есть уже. Джанга будет показывать, да. Но я не использую urllib - он медленный. httplib позволяет на одном http соединении все качать. Я вбрасывал в прошлом треде тесты по времени.
А, забыл сказать. Я могу (и предлагаю) использовать Django, Django Rest Framework и Angular.
А еще макака говорит, что гиттер в спам листе. В репозитории в ридми есть ссылка.
гиттер.im/aq1/WillBeams
Посмотрел те тесты. Весь прикол в том, что ты для httplib устанавливаешь одно соединение, а через urllib каждый раз создаёшь новое. В urllib есть штука, которая позволяет запилить свой менеджер подключений. Как допилю тесты, выложу.
Кстати, а почему вообще джанго?
Потому что самое популярное. Можно использовать для получения профита ирл. А что ты предлагаешь?
Да хер знает, на самом деле. Я с веб-технологиями не особо знаком. Когда-то, лет 6 назад, учил пилоны на спецкурсе. Через пару лет пробовал pyramid, но всё как то не придумывал, что бы интересного нового сделать.
В общем, я к чему это - есть же побыстрее фреймворки. Те же фласки всякие. Насчёт удобства и красивостей, правда, не уверен.
>>В общем, я к чему это - есть же побыстрее фреймворки. Те же фласки всякие. Насчёт удобства и красивостей, правда, не уверен.
Да, Tornado например. Tornado — расширяемый, не блокирующий веб-сервер и фреймворк, написанный на Python.
На flask тоже подобные модули можно поставить, джанга в отсосе.
На торнадо можно сделать транслировали в прямом режиме какие вебмки прямо сейчас касаются например.
Ты не уходи из треда, тут тебе все пояснят сейчас.
Написал readme для скриптов и самого проекта. Спрашивайте вопросы, если что.
Лучше сделайте анимешный хостинг на замену закрывшемуся pomf.se
Шоб вебмки, картинки и все как полагается, без рекламы и капч.
Хотя что-то я тупанул, он и так обзавёлся десятком клонов. Исходники открытые же. Сорри.
О, я хотел с django rest framwork разобраться как раз.
Может завтра заморочусь попробую к твоей штуке прикрутить.
И нахуй ты это притащил? На лоропараше одни школьники-первокурсники-с-питоном-вместо-головы и устаревшие-сорокалетние-быдлокодеры-с-сишкой-вместо-голосы.
Как что-то хорошее. Им дали более быстрый и удобный Го, но нет, хочу жрать говно.
Гоферы теперь шитпостить стали? Иди в свой тред.
Как что-то хорошее. Им дали более быстрый и удобный фортран, но нет, хочу жрать говно
Да ладно вам, джава как язык заебись для новичков, погружающихся в увлекательный мир программирования.
>есть же побыстрее фреймворки. Те же фласки всякие.
Минималистичнее != быстрее.
В жанге стек вызовов лучше оптимизирован, чем во всяких ваших фласках.
Что быстрее в фласке - это jinja2, но в джангах 1.8+ её можно включить вместо дефолтного движка темплейтов.
Ява давно обогнала по скорости С++
http://stackoverflow.com/questions/4516778/when-is-java-faster-than-c-or-when-is-jit-faster-then-precompiled
Ну да, много конечно, но я бы не сказал, что почти все. Да и я как то сомневаюсь, что всем, кто изучает яву, будет интересно пилить IDE.
Я не про изучение джавы или пиление, а про то что софт на десктопе на джаве есть. Его довольно много, но обычно ему есть альтернативы, а вот в сфере ide этих - фактически нет.
Через terminal escape sequences либо через ncurses
Но это вручную геморно делать
Вот либа умеет курсор двигать
https://pypi.python.org/pypi/blessings/
Или возьми dialog консольную утилиту запусти её с ключом --gauge text 20 70
И пиши на её stdin сколько процентов прошло
Выглядить будет так
Пайтон убогий недоязычок для обучения, типа современного бэйсика, только с ОТСТУПАМИ
Ок, спасибо. В текстовом поле PyQt отобразится?
Я использовал sympy + mathml (он там требует преобразование хитрое чтобы браузер показал как надо, но работает). Ну и webkit какой-нибудь для отображения бери.
Продолжай писать на недоязычке для школьников пока серьезные дяди делают энтерпрайз решения.
Толстячок.
Иди лобай на гитаре свой до диез :3, а в наш уютный тред нелезь.
Короче программа должна принимать несколько аргументов через getopt и делать разные вещи, вроде все просто, однако я наткнулся на странную хрень тут, смотри.
http://pastebin.com/JmhPqn31
Похоже на тупую ошибку но я чот не вижу.
> if '--silent' or '-s' in words:
if '--silent':
^^ всегда будет выполняеться потому что bool('--silent') это True
ты наверное хотел написать if '--silent' in words or '-s' in words:
а вообще юзай https://docs.python.org/3/library/argparse.html
Луче docopt.
Спасибо бро. Еще когда в первый раз увидел питоновские ин ор почувствовал ноющую боль в ноге в предвкушении свинца.
Есть матрица которую я забиваю в ячейки выражениями вроде R1+Cp+1/pL этой хуйни дохуя, потом умножаю на вектор состоящий из U1...UN, которые являются неизвестными и прирываниваю к вектору Y, который заполнен значениями. Нужно находить U, проблема в том , что структура постоянно меняется.
Как найти U? Фишка в том, что это нахождение нужно будет повторить 500-1000 раз.
Для тренировки и написания руками с нуля пойдёт.
Мне понадобилось.
Уже слишком уставший чтобы вникать. Скажи в двух словах.
Мне надо дергать сишные функции из .so и обрабатывать их в питоне, при этом зависимостями для конечного юзера должны быть только та .so и сам питон для исполнения моего .py.
Свиг - то, что мне нужно?
Если да - ну штож, я дурак и делал мартышкин труд. Пошел спать.
У тебя есть исходники этих сишных функций? SWIG позволяет почти автоматически сгенеровать обертку для этих сишных функций в виде питоновского модуля.
http://www.swig.org/tutorial.html вот тут простой пример.
Исходники есть. Спасибо, анончик, завтра потыкаю свиг.
Есть моя переделка викторины из книги Доусона:
http://pastebin.com/Rt4ha7Xy
Проблема в работе фунцкии save_score(). Она то ли не может прочесть список кортежей из файла, то ли не может его толком сохранить.
[code lang="text"]
Теперь нужно увековечить Ваша достижение!
Введите Ваше имя: 45
Загружаю таблицу результатов.
Ran out of input
Таблица результатов пока пуста, но мы это сейчас исправим!
[('45', 1)]
Достижение увековечено!
[/code]
http://stackoverflow.com/questions/16208206/confused-by-python-file-mode-w
> w+ : Opens a file for both writing and reading. Overwrites the existing file if the file exists. If the file does not exist, creates a new file for reading and writing.
w+ перезаписываешь файл. ты можешь из него потом читать, но только то, что там туда только что записал.
r+ открывает файл не перезаписывая и позволяет читать и писать в него.
a открывает файл на append - добавление в конец.
Но тебе нужно сначало прочитать из файла в режиме r, потом открыть в режиме w и записать результат.
>w+ перезаписываешь файл. ты можешь из него потом читать, но только то, что там туда только что записал.
То есть если в файл, открытый в режиме "w+", ничего не писать, при использовании метода .close() он сохраняется как пустой даже если до момента его открытия он пустым не был?
Нет, он его обнуляет в момент open, а не close. Как только ты делаешь open(..'w+') файл становится пустым.
А прочесть из него можно только то, что было записано (в буфер файла) после open(.. "w+")?
Без хуйчебников будет совсем уж сферическая теория в вакууме. Задачек нет.
Это значит учебник хуевый. Хороший учебник лучше документации для понимания языка. Не считая синтаксиса конечно, но для особо упоротых случаев есть Лутц, который жирнее официальной документации раза в 3, кек
Exception ignored in:
Task result ignored
и ещё много подобного.
Вот это ещё не до конца поборол:
signal handler must be signal.SIG_IGN, signal.SIG_DFL
Например если вызвать cancel когда ещё create_subprocess_exec не отработал. Надо наверное шилднуть его вместе с присваиванием переменной.
Процессы нужно завершать, иначе орфанами засирается всё. Если ты запустил что-то в отдельном таске, будь бобр вызвать terminate на cancel. А после terminate ещё и подождать надо, то есть снова запустить run_until_complete, только с ожиданием по всем незавершённым таскам (кстати даже те которым ты вызвал cancel в качестве финализации - тоже ещё считаются незавершенными, так как таск может перехватывать cancel и должен отработать это дело). Всё не так просто.
Это видимо только для субпроцессов, я с ними ещё дела не имел.
Как пользоваться Kivy? Скачал, установил
Что запускать?
Документацию читай.
Алсо никогда в своей жизни еще не писал тесты для своего говнокода, нужна инфа по этому процессу желательно для тупых.
Генерировать код и .ui файла хуевая идея. Когда поменяешь что-то в ui файле - заебешься мерджить.
А так я хуй знает я на pygtk писал
> UI desinger для хуесосов - надо писать с нуля
Смотря что, некоторые вещи проще из кода генерить действительно. Некоторые нет. Головой думай.
Импортишь сразу .ui файл без конвертации. Раскидываешь сигналы. Два файла или три — по вкусу.
>>551141
Это не про то. Речь о конвертации ui → py. Ты в получившийся файл что-то добавил руками, а потом надо gui изменить. Соответственно надо как-то мерджить сгенерированный py и тот, что ты руками потрогал. Но это хуёвая идея и так делать не нужно конечно же.
>Ты в получившийся файл что-то добавил руками
Вот этого надо избегать. Use манкипатчинг и наследование, Luke.
Нет необходимости этот год генерить вообще, можно просто подключать ui файл и всякие сигналы цеплять.
Задача: прочитать csv файл. Не упустить ни одного неправильного случая, найти и исправить все ошибки и записать исправленный файл в том же формате csv.
Файл
http://pastebin.com/gVgzKjzi
На выходе нужно иметь
int (id), str (имя с большой буквы без мусора), Decimal, Decimal
Можно использовать чтобы не ебаться с парсером:
https://docs.python.org/3/library/csv.html
Вместо приведения к float со всеми вытекающими использовать decimal:
https://docs.python.org/3.4/library/decimal.html
Давай к нам в вебм-проект. Задачи тебе найдём. Можешь логи парсить, например.
Следующая задача записать выхлоп предыдущей в бинарном формате и сделать функцию для чтения.
Формат:
Заголовок (в начале файла):
b'TOPKEK' - метка типа файла
int32 - количество записей
Записи фиксированный ширины:
int32 - параметр 1 (умноженное на 1000 и округлённое число из третьей колонки)
int32 - параметр 2 (умноженное на 1000 и округлённое число из четвёртой колонки)
int32 - смещение относительно начала файла к строке с именем
Записи произвольной длины:
плотно друг за другом строки заканчивающиеся символом перевода строки '\n'
Функция чтения должна быть генератором, то есть читать из файла по мере необходимости выдавая:
yield id, name, a, b
Если пользователь во время чтения файла нажал Ctrl-C или Ctrl-Break вывести на экран последний прочитанный id.
Пройти собеседование.
Никак не пойму, что надо сделать. Где только не задавал вопрос, всегда ответ в одной строчке. Начинаю тыкаться, пробовать что-то сделать - лезут самые разные ошибки.
Можете показать мне готовое решение? Не то что бы я не готов разбираться, но мне кажется тут что-то очень простое, и даже в чем-то другом ошибка. Сижу на этом три недели.
Аналогично QR. Только если в QR ты вращаешь/отражаешь вектор-столбцы, то в LQ надо то же самое делать с вектор-строками.
Но если лень писать самому:
A^T = QR
(A^T)^T = (QR)^T = (R^T) x (Q^T) = LQ'
Т.е. посчитай QR разложение транспонированной матрицы, в потом транспонируй полученные R и Q.
Бедненький!
Ну я в 5 лет тоже на бейсике калькуляторы ебашил по книжке, так что стаж 19 лет типа.
Да-да, все они там ещё сами игры писали для спеки, паскаль с делфи по книжкам Фаронова учили сидя на горшках, и если у тебя этого всего не было то не стоит браться за программирование.
ROLL
Сделать приложение реализующее базовую http аутентификацию (https://en.wikipedia.org/wiki/Basic_access_authentication)
Должна быть возможность применить аутентификцию для всего сайта через middleware и для некоторых представлений с помощью декоратора.
Доступы должны храниться в настройках проекта(settings).
Ну и чего от меня хотят?
Парсинг текста - это сложноватая для меня задача. Тут основной гемор работа со строками. И окуда достал такой длинный файл, хитрец?
Как я понял, сначала все запятые надо заменить на точки, а | заменить запятыми? И вычистить все ";REF#" и "</span". Больше нет никакого мусора? А то глазами проверять все 4328 строк желания нет.
Попробовал решить эту задачу. Споткнулся на точках в начале строк. Весь остальной мусор программа вычищат и нужные замены делает.
http://pastebin.com/HifFY8Vt
[code lang="text"]
Traceback (most recent call last):
File "/home/deanona_ne_nado/Prog/Python/pr/csv/fix_csv.py", line 19, in <module>
if line[0] == ".":
IndexError: string index out of range
[/code]
Как вообще [0] может быть out of rang?!
> Весь остальной мусор программа вычищат и нужные замены делает.
Вернее делала всё это до того как я начал бороться с точками в начале строк.
http://pastebin.com/h3k3arnF
Но... Хотелось бы узнать почему этот >>552003 говнокод не работал.
Оне не путой.
Проверял в интерактивной оболочке после прогона программы. И если бы он бы пустой, то интерпретатор не стал бы пытаться выполнить блок
[code lang="text"]
if line[0] == ".":
line = line[1:]
[/code]
и соответсенно не выдал бы ошибки.
Ошибка могла быть вызвана пуcтой строкой "", которая не содержит даже символа возврата строки...
Update: понял, откуда там взялись пустые строки в списке.
Выражение csv_lines = csv.split("\n") убирает "\n". Но это не полностью объясняет причину ошибки, т. к. в исходном csv-файле нет пустых с точки зрения текстового формата строк, то есть строк, которые содержат только символ новой строки.
Update 2: Авотхуй. Код, с поправкой на удаление "\n" http://pastebin.com/Yq8PPYKz выдаёт ту же самую ошибку.
Даже после добавления "\n" в каждую строку, ошибка выдаётся.
Немодифицируемы? Я их и не модифицирую.
Выражения line += "/n" и line = line[1:] не модифицируют строки, а присваивают переменной line новые строковые значения.
>а присваивают переменной line новые строковые значения
А через неё новые строковые значения заменяют строки в списке.
>В списке всё равно остаются исходные.
Каким образом, если line в каждой итерации ссылается на элемент списка, а не содержит копию этого элемента?
К тому же код с предварительной проверкой на пустые строки перед присваиванием нового значения переменной не заставлял интерпретатор выдавать ошибки
>Во-вторых, у тебя на конце файла \n.
А вот это точно правда. Сейчас верну проверку на пустые строки.
>А вот это точно правда. Сейчас верну проверку на пустые строки.
Хотя один хуй. После
[code lang="text"]
for line in csv_lines:
line += "/n"
[/code]
Пустых строк в списке быть не может.
>>552003
Нет, ну это никуда не годится. Во-первых есть модуль csv, там можно задать любой delimiter, это вот сейчас по чистой случайности в полях нет символа | а ведь он может там появиться.
Во-вторых ты сам просматриваешь выхлопной файл что ли чтобы убедиться в отсутствии косяков? Плохая практика. А если в файле миллионы строк? Как раз будет где экзепшены использовать.
В-третьих используй with.
>Нет, ну это никуда не годится. Во-первых есть модуль csv, там можно задать любой delimiter,
Его ещё изучать надо. Рановато мне работать с узкоспециализированные модулями. Разделитель можно прописать в переменной или в константе.
>это вот сейчас по чистой случайности в полях нет символа | а ведь он может там появиться.
Появиться может любой мусор. Но я действовал по обстоятельствам. Код без цикла фор выдал нужный результат.
>Во-вторых ты сам просматриваешь выхлопной файл что ли чтобы убедиться в отсутствии косяков?
Нет. Открываю в LibreOffice Calc.
>В-третьих используй with.
Исключения не пригодились пока.
>В списке всё равно остаются исходные.
Наверное, и в этом ты прав. Простым перебором элементов списка напрямую через управляющую переменной задачу решить не получилось.
Реализовал цикл по-другому: http://pastebin.com/JNUjEDBk
Лол.
https://docs.python.org/3.4/library/csv.html#module-contents
Тебе нужна только первая функция csv.reader. Там прямо пример в 5 строк есть. Что там изучать?
>я действовал по обстоятельствам
>Открываю в LibreOffice Calc
Надо бы специально тебе сделать файл в несколько миллионов строк.
>with
>Исключения не пригодились пока
Это не для исключений, а для корректного закрытия файла. f.close() вызовется сам в любом случае, даже в случае исключения, а не как у тебя.
f.close будет вызываться когда сборщик мусора соберет f, даже если with не используется.
Есть удобная и аккуратная конструкция with. Нет, не хочу with, хоту жрать говно и догадываться потом, а с хуя ли у меня программы на ровном месте в дедлок уходят и постоянно приходится системные лимиты на количество открытых файлов увеличивать.
>Тебе нужна только первая функция csv.reader. Там прямо пример в 5 строк есть. Что там изучать?
Она только читает csv-файлы, но не удаляет мусор.
>Надо бы специально тебе сделать файл в несколько миллионов строк.
Ещё и для проверки конечного результата код писать? А как подом удостовериться в надёжности этой проверки?
Ну наверное мне следовало бы уточнить что как csv файл 100% валиден.
>А как подом удостовериться в надёжности этой проверки?
Исключения бросать если что не так.
>Ну наверное мне следовало бы уточнить что как csv файл 100% валиден.
Замена разделителей да, была лишней.
А вообще я никогда не ковырялся в CSV-файлах. Я об этом формате узнал из Википедии после того как такой файл попался мне на глаза.
>>552220
>assert или if raise
Ох, придётся мне вкуривать ещё один учебник. А потом упарываться официальной документацией.
> Простым перебором элементов списка напрямую через управляющую переменной задачу решить не получилось.
Дошло наконец почем так: в резульате операции присвоения внутри цикла управляющая переменная перестала ссылаться на элемент списка и вместо этого ссылалась на значение в другой области памяти
>Оне не путой.
>Проверял в интерактивной оболочке после прогона программы. И если бы он бы пустой, то интерпретатор не стал бы пытаться выполнить блок
>[code lang="text"]
>if line[0] == ".":
>line = line[1:]
>[/code]
>и соответсенно не выдал бы ошибки.
Почему не выдал бы? Прямо вот на проверке условия и вылетел бы. Пустой список и пустая сторка, в данном случае, одинаково ведут себя.
Эх, жаль. Думал, вроде бы вполне простая задача.
Вместо if'а в цикле, кстати, можешь просто csv_lines.lstrip(".") использовать же, вставив это в строку с добавлением \n.
Да и вообще, навреное, можно сделать одной строкой:
csv = "\n".join(line.lstrip(".") for line in csv.split("\n"))
А ларчик просто открывался. Не знаю, зачем я вбил цену стрингами, на самом-то деле.
res = 1
for _ in range(b):
res *= a
return res
print(my_power(2, 9))
Как вставить проверку ввода данных? Чтобы а и б не были равны 0, дробному или отрицательному числу или тексту?
Исключения или if'ы.
И как сделать, чтобы результат, который возвращает api записывался в файл?
в python пока могу плохо, да, но надеюсь, что "пока"
Пока.
Друг, у тебя со всем плохо, поучи/посмотри элементарные алгоритмы, как что делается.
st = ((d, 3), (a, 3), (c, 1))
Как вернуть букву, рядом с которым самое большое число? Отсортировать и вывести st[0][0].
Как реализовать вывод букв в алфавитном порядке, если цифры рядом с ними одинаковые?
надеюсь понятно описал
Очепятка же.
>>552388
Набыдлокодил вот так http://pastebin.com/bqpSrdXk
Ужасный код, надеюсь кто-то покажет как можно было сделать это красиво.
http://ideone.com/ZVWi8p
Но это не самое удачное решение. Вообще лучше пересмотреть свою структуру данных. Раз нужные такие™ запросы, то это не лучший вид хранения.
fhand = urllib.urlopen(url)
all_in_one_string = fhand.read()
lst = all_in_one_string.split("\n")
number_lst = len(lst)
print number_lst
stat_num = 0
while stat_num != 1 :
----if lst[number_lst].startswith('<div class="noteFotter">') :
number_lst = len(lst) - 1
Тоже не работает.
Причем, вывод дает строку if lst[number_lst + 1], которой даже нет.
Так у тебя на 87-ой всё равно есть lst[number_lst + 1], которое вообще непонятно чего значить должно, при твоих значениях number_lst. Ты чего сделать-то хочешь? К последнему элементу лучше lst[-1] обращайся, гораздо очевиднее же.
Так, оказалось, что несколько часов тестировал не тот скрипт, которые писал.
Но, все равно не работает.
Можно ли совмещать fhand = urllib.urlopen(url)
fh_info_file.write('URL: ' + url + '\n\n' + 'Published files: ' + '\n\n')
for line in fhand :
и
all_in_one_string = fhand.read()
?
Сначала построчно разбираю файл, а потом читаю его одной строкой и разбиваю по переносам строк и помещаю в list. Это мне надо, что обработать те строки которые можно привязать только к другой строке, в данном случае <div class="noteFotter">.
Нет. Из буфера только один раз можно прочитать. Так что сначала all_in_one_string = fhand.read() а дальше уже чего хочешь с этим делай.
Благодарю. Так и сделал.
api vk выводит разный результат, но нужно чтобы сохранялся результат только такой: {'copied': 0, 'liked': 1}
Подскажите, как такое реализовать?
curl '...' | grep copied.*liked >> file.txt
Не знаю, на мертвых не пишем.
Есть либа https://xlsxwriter.readthedocs.org/
Есть такое дерево путей, видно что xlsxwriter лежит в yoba директории:
/
baget.py
yoba/
---- __init__.py
---- xlsxwriter/
Как импортировать xlsxwriter в baget.py?
Пишу from yoba import xlsxwriter - посылает на хуй.
Что я делаю не так?
Ну парсер это хорошо и удобно. Проблема в том что парсер будет некорректно обрабатывать / не обрабатывать вообще невалидный html, а регуляркой можешь что угодно парсить.
Ага, sosnolley, ньюфаги, таки нашел решение!
from subprocess import call
call(command, shell=False)
Невозможно у них, ага.
Если тебе надо менеджить ещё и подпроцессы, то вот так лучше делать. Можно убрать ещё и аутпут, если будешь из консольки запускать.
process = subprocess.Popen(
command
, shell = True
, preexec_fn = os.setsid
, stdout = open('/dev/null','w')
, stderr = open('/dev/null','w')
)
Убивать потом как процесс-группу:
os.killpg(process.pid, signal.SIGKILL)
Бумп вопросу >>552861
Есть пара вопросов по Джанго:
class AbstractPetuh(....):
....class Meta:
........abstract = True
....email = models.EmailField(db_index=True)
1. Как мне в классе-наследнике поменять db_index на False?
https://docs.djangoproject.com/en/1.8/topics/db/models/#field-name-hiding-is-not-permitted
2. Если сделать так:
class Petuh(AbstractPetuh):
....class Meta(AbstractPetuh.Meta):
........pass
то Petuh тоже будет абстрактным?
Пикча приклейся!
СОЛЮШЕН
# python -c 'import libs.xlsxwriter'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "yoba/xlsxwriter/__init__.py", line 3, in <module>
from workbook import Workbook
File "yoba/xlsxwriter/workbook.py", line 22, in <module>
from xlsxwriter.worksheet import Worksheet
ImportError: No module named xlsxwriter.worksheet
# awk 'NR==22' workbook.py
from xlsxwriter.worksheet import Worksheet
ВОТ ЖЕ СУКА
# sed -i 's/from xlsxwriter\./from /g' *
И ТЕПЕРЬ РАБОТАЕТ! АЖ ТРИСЁТ! ЕБУЧИЙ ПИТОН
Так ты решения не предложил даже, выходит, что неосилятор - это ты.
Охуенно - скачиваешь либу и меняешь исходники, чтобы хотя бы заработало.
import os
import time
source = ['"C:\\Users\\user pc\\Desktop\\lesson"']
target_dir = 'C:\\pythbackup'
target = target_dir + os.sep + time.strftime('%Y%m%d%H%M%S') + '.zip'
zip_command = "zip -qr {0} {1}".format(target, ' '.join(source))
print(zip_command)
if os.system(zip_command) == 0:
\tprint('Reserve copy created in', target)
else:
\tprint('Error! Copy is not created'
[~]$ python3 -m pip install xlsxwriter
You are using pip version 6.0.8, however version 7.1.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Collecting xlsxwriter
Downloading XlsxWriter-0.7.4-py2.py3-none-any.whl (133kB)
100% |################################| 135kB 1.3MB/s
Installing collected packages: xlsxwriter
Successfully installed xlsxwriter-0.7.4
[~]$ python3
Python 3.4.3 (default, Sep 19 2015, 16:16:36)
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import xlsxwriter
>>>
А теперь катись к хуям, неосилятор.
Выбрось двойку. В тройке можно писать или
except Exception as e:
или
except:
Exception базовый класс для всего. Но намного лучше перечислять конкретные экзепшены по мере появления или заглянуть таки наконец в доку.
у меня тройка. эксепшенов разных появляется море, все прописывать заебешься. пропишу except:, спасибо.
f = open('file.txt', 'w')
vkapi.likes.getList(owner_id=-xxx, item_id=yyy, friends_only=1, type='post')
f.write( '\n'.join(str() +'\n'))
f.close()
А я ебу что и как твой раковый вк-апи возвращает?
Попробуй print(vkapi.likes.getList(owner_id=-xxx, item_id=yyy, friends_only=1, type='post')) для начала.
Если есть что-то вразумительное - присваивай переменной и пиши ее в файл. Или сразу вместо принта f.write()
Иначе кури документацию.
Спасибо, анон, все заебись!
Ни в одном из учебников нет доходчивого объяснения.
Ссылка объекта на самого себя.
В ебанутом пистоне обязательный первый аргумент у методов объекта.
>В ебанутом пистоне обязательный первый аргумент у методов объекта.
Прохладно, братишка.
https://docs.python.org/3/library/functions.html#staticmethod
Да ладно, я знаю то в питоне есть аналоги статических методов, прост наверняка нюфагу это пока не важно и сути он не поймет.
Пройди какой-нибдуь курс на той же кодокадемии, что ли, потому что при виде строки
>f.write( '\n'.join(str() +'\n'))
Складвается ощущение, что ты абсолютно ничего не понимаешь. Т.е. на что ты вообще надеялся, что в этой строке произойдёт?
>>Т.е. на что ты вообще надеялся, что в этой строке произойдёт?
>Незнаю, мне в официальной группе в вк сказали это мне дожно помочь.
a = input("create text")
b = a[0]
class pribavit:
===def myfunc (self, x):
====(ss) = 20+x
====print(ss)
====return ss
object1 = pribavit()
object1.myfunc(a)
Пишет:
Traceback (most recent call last):
File "C:\MyCodeOnPython.py", line 10, in <module>
object1.myfunc(a)
File "C:\MyCodeOnPython.py", line 5, in myfunc
(ss) = 20+x
TypeError: unsupported operand type(s) for +: 'int' and 'str'
https://github.com/dimka665/vk/blob/master/vk/mixins.py#L64-L66
Ах да спасибо в любом случае.
dict не имеет никакого порядка, остаётся только OrderedDict. Если с памятью проблем нет, не будет ли чище, вместо изъёбств с ловлей эксепшнов, сделать как-то так:
a = <иходный словарь>
b = OrderedDict()
for key in a.keys():
b[key] = a[key]
Ведь OrderedDict запоминает ключи в порядке ввода. Ну и a.keys() может быть заменено на что угодно, включая какой-то отсортированнй список. Разве что лишних ключей там быть не должно. Конечно, тут создаётся новый словарь.
(a < b) <=> (a x b > 0)
Но в питоне 3 нельзя написать cmp = lambda a, b : a x b, потому что параметр cmp выпилен и оставлен только key. Че делать?
На нём можно и просто всё делать, без model-view. В любом случае, лучше ничего нет, ну, может гтк, но я им не пользовался. Всё остальное либо мертво, либо говно-ткинтер, который в стандартной либе лишь из-за совместимости.
Сортировать надо индексы, можно использовать list.index как ключ сортировки.
gtk через pygobject очень даже норм. В линуксах дохрена на нем написано.
import math
import random
a = input("create chislo: ")
b = random.randint(1,5000)
c = random.randint(1,5000)
class pribavit:
def myfunc (self, x, y):
ss = int(y) + int(x)
while ss < c:
print(ss)
ss = ss + 1
print("result is ", ss)
input("Exit?: ")
return ss
object1 = pribavit()
text = object1.myfunc(a, b)
spisok = str(text)
class napisatel:
def pisat(self, pismo):
f = open("znachenie.txt", "w")
f.write(pismo)
f.close()
print("zapis osushestvlenna")
def pisat2(self, pismo):
f = open("znav.pdf", "w")
f.write(pismo)
f.close()
print("zapis osushestvlenna")
napisat1 = napisatel()
#napisat1.pisat2(spisok)
class rasshiren(napisatel):
def pisat3(self, pismo):
f = open("znav.fb2", "w")
f.write(pismo)
f.close()
print("zapis osushestvlenna")
rasobject1 = rasshiren()
rasobject1.pisat(spisok)
import math
import random
a = input("create chislo: ")
b = random.randint(1,5000)
c = random.randint(1,5000)
class pribavit:
def myfunc (self, x, y):
ss = int(y) + int(x)
while ss < c:
print(ss)
ss = ss + 1
print("result is ", ss)
input("Exit?: ")
return ss
object1 = pribavit()
text = object1.myfunc(a, b)
spisok = str(text)
class napisatel:
def pisat(self, pismo):
f = open("znachenie.txt", "w")
f.write(pismo)
f.close()
print("zapis osushestvlenna")
def pisat2(self, pismo):
f = open("znav.pdf", "w")
f.write(pismo)
f.close()
print("zapis osushestvlenna")
napisat1 = napisatel()
#napisat1.pisat2(spisok)
class rasshiren(napisatel):
def pisat3(self, pismo):
f = open("znav.fb2", "w")
f.write(pismo)
f.close()
print("zapis osushestvlenna")
rasobject1 = rasshiren()
rasobject1.pisat(spisok)
Нахуй этот кривущий транслит? create chislo? Really? Питон3 с юникодом нормально работает, пиши либо на рюске, либо на английске. И не выебывайся.
Дальше лень читать без форматирования. Запили на пасту чтоб анон не мучился.
А что ты хочешь услышать? Голова-то твоя, если чувствуешь, что можешь или примерно понимаешь, что от тебя требуется - начинай делать
Ну хотелось бы услышать о том, как вы начинали, если вы в этом треде значит в питоне заинтересованны.
Берёшь и делаешь, ёпте, чего ждать-то? Не знаешь, как что-то сделать — в гугл. Или ты думаешь, что задрочив 1000 элементарных упражнений тебя вдруг магическим образом осенит и ты без помощи интернета и даже доков напишешь еве онлайн, вслепую перескочив на стаклесс?
Просто хочу сказать что, те кто используют питон мудаки.
Благодарю за внимание.
С уважением, ваш Аноним.
Не только номера строк, но ещё и номера символов на строке (столбцов), так интерпретатору легче показывать, где ошибка.
Крейзи.
С уважением, ваш Аноним.
----------
Аноним писал:
Не только номера строк, но ещё и номера символов на строке (столбцов), так интерпретатору легче показывать, где ошибка.
functools.cmp_to_key(your_cmp)
Эт нормально. Просто у тебя уже старческое слабоумие начинается. Обычно простые вещи проще осилить, чем сложные, но когда мозги, как сухое говно, приходится лабать на том, к чему привык.
ПИТОН НЕ КОБРА
Что не так?
Сначала я делаю так:
all_in_one_string = fhand.read()
lst = all_in_one_string.split('\n')
number_lst = len(lst) - 1
stat_num = 0
while number_lst >= 0 :
----if 'text"' in lst[number_lst] :
...
----number_lst -= 1
if '<div class="noteFotter">' in lst[number_lst + 1]:
...
number_lst += 1
То есть, сначала прохожу с конца по каждому элементу списка (и эта часть работает) до -1, а потом с начала списка (вернее пытаюсь, ведь эта часть не работает). Но какого хера мне пишет, что номер элемента вне списка в начале второй части?
Ну а запринтить number_lst перед этой строкой и увидеть его значение религия не позволяе? Вангую, перед строкой if '<div class="noteFotter">' in lst[number_lst + 1], переменная number_lst равна номеру последнего элемента списка, т.е. number_lst -= 1 не выполняется ни разу (я вижу там continue, а остальную часть кода и сам текст ты скрыл, что очень способствует помощи).
>у а запринтить number_lst перед этой строкой и увидеть его значение религия не позволяе?
Позволяет. В том-то и дело, что там -1 для этого я и прибавляю единицу во втором цикле if '<div class="noteFotter">' in lst[number_lst + 1]:. Либо 0, если я обнуляю number_lst перед этим.
>Вангую, перед строкой if '<div class="noteFotter">' in lst[number_lst + 1], переменная number_lst равна номеру последнего элемента списка, т.е. number_lst -= 1 не выполняется ни разу (я вижу там continue, а остальную часть кода и сам текст ты скрыл, что очень способствует помощи).
Там:
except :
----print "Can't download", img
----continue
Т.е., возврат в начало первого цикла.
Может завалюсь как-нибудь. Сейчас фласк изучаю.
Ты хоть бы википедию для приличия открыл.
>Возможно ли
Сам-то как думаешь? Если можно на numpy, то почему нельзя на питоне?
GTK вообще или python+gtk? Первого навалом же.
>GTK
>но что-то сдается нигде он не применяется.
Списочек пакетов из дебиана, юзающих питоновские биндинги к гтк.
https://bpaste.net/show/bc337ac32990
Да блять мне трудно понять, что это значит, хотя вроде определение этих слов знаю. Можно простыми словами?
Алсо, self не кейворд и вместо него можно писать что угодно. Но принято self.
>Чтобы обращаться к своему экземпляру класса.
Помедетируй над этим. t = Test(); t.x - так ты обращаешься к содержимому класса снаружи. self.x - изнутри класса. Ничего нового и сложного тут нет. Ты вообще с ООП в других языках работал?
Да это я знаю и так. Вопрос в том зачем он нужен, когда можно обойтись без него вставляя его только в описании метода. И поэтому мне также непонятно почему он вообще где либо есть кроме как там где я сказал.
Да в PHP было дело. Но в PHP мне все казалось предельно ясным, хотя я его подзабыл, но там вроде $this -> вместо self.
Там все по другому, там, если не ошибаюсь это принудительно делается, и и вообще там насколько я помню над этим можно даже не задумыватся.
Меня другое интересует, почему его при всем при этом используют не только так как обязательно?
Позадрачивай определения. Что тако класс, а что его экземпляр, и какого хуя у них есть методы. Ну ты пони.
Вот у меня есть класс. Вот пишу я в нём есть метод, в котором хочу использовать один из атрибутов (экземпляра) этого класса. Как я без self до него доберусь-то? Никак. Затем self и нужен.
Принаут, в котором будет
>print(number_lst) # -1 or 0
>print(len(lst)) # > 1
>if ... in lst[number_lst+1] # errore
В студию, пожалуйста. Только принты внутрь лупа ставь, ты вадеь наверняка там инкрементируешь number_lst, да?
Единственное, пока не знаю, насчет сборки, говорят какие-то сложности могут возникнуть, но в целом пока очень годнота.
cx_freeze. Под вендой проблем со сборкой нет. Под линуксом собирал один раз, была проблема с поиском и копированием *.so файлов в автоматическом режиме, в итоге скопировал их руками. Но под линуксами уж проще пакеты поставить или сам pyqt собрать, нежели делать бинаруную сборку.
Я убрал в while и все заработало. ХЗ почему так. Хреново конечно, но ладно.
Теперь вопрос в том как обойти cloudflare, т.к. эта хрень мне запрещает заходить на сайт (через браузер захожу нормально).
Загуглил, что надо под браузер закосить.
Вставил
urllib.URLopener.version = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; T312461)'
Вроде пока работает.
Потом может еще за прокси спрошу. Что-то у меня не получается с ними.
pycharm всегда грустный, если его не настриваться и запускать на слабом пк.
Так-то похуй в чём писать. Я например Geany юзаю. Простейший редактор без наворотов.
Если ты у мамки геймдев то бери юнити и не выебывайся.
Если задача стоит сделать игру именно на питоне чтобы лабу сдать или курсовик , то pygame, например. Хотя можно и в Tkintere ебашить.
if url.endswith('.jpg' or '.jpeg' or '.png' or '.tiff' or '.bmp' or '.pdf' or '.mp4' or '.avi' or '.wmv') :
срабатывает только первый '.jpg', а остальные форматы тупо игнорируются.
То есть, есть попадается, например, 1.wmv или 1.jpeg, то if не работает?
Прокси вряд и потребуется, cloudfire и так пропустит.
Почитай как работает оператор или в питоне. Заодно как работает внутри эта функция глянь (прямо код). Совсем не так, как ты думаешь.
Разве можно быть настолько тупым и ленивым, чтобы не загуглить этот вопрос?
Ну или хотя бы зайти на сайт pygame и найти там ебаный вики с факом?
http://www.pygame.org/wiki/FrequentlyAskedQuestions#Does%20Pygame%20work%20with%20Python%203?
Это ведь пиздец как трудно.
Делаю через xlwings. В принципе всё ахуенно.
Значения вроде вытаскиваются, однако код всё равно не работает. Выдает KeyError 16.0
http://ideone.com/DhnqHU
Однако, если задать material и depth "Вручную"
http://ideone.com/LCPTb3
Всё работает. Хуй знает че за хуйня.
Конечно трудно, я ж не изначально спрашивавший, и мне пайгейм казался уже много лет чуть ли не заброшенным проектом, и копаться на их убогом сайте, где даже кнопки давнлоад или того же FAQ нет, желания не появлялось (честно, я туда перед постом зашёл и сразу вышел).
Вбить в гугл ебаные заветные pygame and python3 или python3 games сука тоже видимо тяжело. Ибо блять первая ссылка сразу блядский туториал. http://pythonprogramming.net/pygame-python-3-part-1-intro/
И что ты мне предлагаешь?
material = str(Range('Sheet 1', 'E2').value)
Один хуй тоже самое будет.
Очевидно же, чтобы пользователю не пришлось ставить питоны и библиотеки.
str(int(...)), например. Откуда я знаю, в каком там формате у тебя записаны данные в экселе. Включе у тебя стоит "16", значит именно строку "16" тебе и нужно туда передаь в качестве ключа.
Слишком расплывчато описано. И в конце концов нихуя не понятно что тебе нужно сделать.
Если тебе нужно просто заебенить инфу в БД, то просто напиши Custom Django Command, которая будет хуярить в БД данные.
Можешь сделать еще таблицу с этими данными и привязать к юзеру по ключу и по идее нихуя тебе не надо отправлять ему.
Больше конкретики: Что за инфа в CSV, зачем эта инфа нужна тебе в проекте, что ты с ней будешь делать, как с ней юзер контактирует.
В csv у меня данные пользователей, имя, емейл, телефон, дата рождения и т.д. Эти пользователи не зарегистрированы на сайте. Мне нужно перенести данные из csv дабы юзер мог зайти на сайт указав свой емейл и пароль(который я сгенерирую и отправлю ему по почте). Как-то так
У тебя есть модель юзеров, которые уже зарегистрированы на сайте?
Просто берешь делаешь Custom Django Command и заполняешь БД создавая новые записи там же делаешь SMTP сервер и рассылку.
Я страный ньюфаг и умею только в 3.
хочу запускать там свои поделия, но не могу поставить необходимые модули для третьего, всякие пип ставят на второй, дефолтный.
как же быть?
python3 -m pip install package_name ?
Ну и вообще по установке модулей - https://docs.python.org/3.5/installing/index.html
Алсо, некоторых конкретных модулей от второго под третий может просто не быть, т.к. они говно мамонта/автор умер/забил и поленился. Но может быть альтернатива в первом результате гугла. Если нет, если портить на третий самому лень и прямо таки НАДО второй - есть 3to2, бэкпортит твой код с третьего на второй.
И хуле ты тут в 04:41 забыл? Иди спи, шакал ебучий. Заставил меня отвечать.
Я непонятно выразился. Коротко: я в вот ебал второй, хочу третий везде (даже Аллах).
На локальной машине все хорошо работает, осталось только модули на сервер накатить.
Сделал поделие которое ползает по всему двачу в поиске "засмеялся проиграл" тредов и качает из них картинки. На сервере сможет делать это целыми днями, пока его не забанят нахуй.
А сейчас у меня 10 вечера 0_o
>>555653 (OP)
Это копия, сохраненная 30 октября 2015 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.