Этого треда уже нет.
Это копия, сохраненная 30 октября 2015 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
42 Кб, 340x480
Python #544442 В конец треда | Веб
Шапка: https://github.com/TheKnightsWhoSayNi/info/wiki/Hat

Прошлый: >>537855 (OP)

Слоупокам напоминаю, что в 2020 заканчивается поддержка второго питона и пора бы переходить на третий
http://legacy.python.org/dev/peps/pep-0373/
#2 #544446
Питонач, я верстальщик-даун, вопрос по Джанге. Пилю свой проект, вот сейчас думаю про архитектуру и алгоритмы.

Есть две версии текста, которые будут браться из базы и отображать на странице. Старый и новый текст. Новый сравнивается со старым и показано где убрано, и что добавлено: например, точно как в вики или на гитхабе. Как это сделать?
#4 #544462
Как запросить размер файла перед его скачиванием, а также узнать дату его заливки на сервер?
#5 #544468
>>544462
import requests
r=requests.head('http://krautchan.net/files/1442487814001.jpg')
print(r.headers['content-length'])
print(r.headers['last-modified'])
#6 #544470
>>544468
Благодарю.
#7 #544526
Каково это, писать на мёртвом языке?
#8 #544528
>>544526
Ты дурачок? Что ты делаешь в этом треде?
#9 #544529
>>544526
Мудило, ты опять выходишь на связь?
#10 #544534
>>544526
Заебись!
#11 #544539
>>544526
Приятно, ведь он не совпротивляется.
#12 #544712
Книжка на оп-пике, кстати, заебись. Совсем недавно начал изучать по ней. И примеры, и задачки сразу после главы.
Есть еще что-то подобное? Чтобы теория с практикой.
#13 #544715
>>544712
Попробуй сам себе задачки придумывать и решай их. Гугл в помощь.
#14 #544758
>>544450
В стандартной библиотеке тоже есть difflib.
#15 #544781
>>544712
Аналогично, начал и понимаю процентов 50%.
Правда я старый и гуманитарий в добавок. Но сдаваться не хочу.
#16 #544788
>>544781
Прочитав 1 раз не каждый сразу поймет, нужно перечитывать по несколько раз, все так делают.
#17 #544858
Сегодня узнал что в двойке оказывается нет nonlocal. Бэкпортинг говорите? Ну-ну.
20 Кб, 265x265
#18 #544931
>>544858
Ну, к слову, nonlocal и global — это больше сигнал о том, что что-то не так в ОРХИТЕКТУРИ.
#19 #544968
Делал кто парсер пикуба и джойреактора? Интересует в научных целях. Нужно выгружать теги, рейтинг картинок ну и сами картинки было бы не плохо.
#20 #545047
>>544968
import re
import pycurl

https://regex101.com/
#21 #545053
>>544968
Не слушай >>545047-чухана, он явно дальше пиэйчпи не заплывал.
aiohttp, beautifulsoup, html5lib/lxml
#22 #545477
>>544712
https://play.google.com/store/books/details/Al_Sweigart_Automate_the_Boring_Stuff_with_Python?id=UEu0CAAAQBAJ

Вообще охуеть. Примеры очень разносторонние, дают понимание что вообще можно сделать. Отталкиваясь от них легко найти реальные задачки в окружающем тебя мире и порешать их(придется гуглить, но примерно что делать ты будешь знать).
#24 #545487
>>544931
Это вложенные функции и замыкания доступные на запись.
#25 #545488
Аноны, хочу сделать интернет-магазин на Django. Именно на нем, так как в нем есть генератор админки по моделям. Сроки у меня очень жесткие.

Приглядываю модули корзин.

https://www.djangopackages.com/packages/p/django-shop/
http://cartridge.jupo.org/

Ну и так далее. Кто реально работал/сталкивался? Запросы скромные - корзина, чекаут, более-менее удобная доработка напильником.
#26 #545510
как подружить питон с sublime, или есть что-то лучше?

ньюфаг
#27 #545511
>>545510
Автокомплит везде хуёво работает. Не только в саблайме.
#28 #545531
>>545511
как запускать из под sublime?
#29 #545533
>>545531
Осваивай консольку и баш. Хуле там запускать. python lol.py
#30 #545579
>>545510
PyCharm.
#31 #545662
>>545487
Я знаю, но в таких ситуациях лучше использовать мутабельные объекты. Это очень редкая ситуация, когда тебе надо присвоить имени другой объект и скорее всего это можно сделать по-другому, более элегантно.
#32 #545663
32 Кб, 1458x348
#33 #545860
Пиздец говно ваше Джунго.
#34 #545864
>>545860
Мажорные версии, между их релизма год прошел.
40 Кб, 525x314
#35 #545883
Объясните почему кириллицу так выводит?
6 Кб, 1316x298
#36 #545894
>>545883
ОБЪЯСНЯЮ, ЧЕТКО И ЯСНО
37 Кб, 586x307
#37 #545908
>>545894
Большое спасибо. Надеюсь несложно будет и это объяснить.
#38 #545910
>>545908
apt-get install python3-lxml
#39 #545919
>>545910
Премного благодарен. Последний вопрос. Зачем устанавливать модули через pip, если потом python3 их не находит?
#40 #545928
>>545919
https://docs.python.org/3/library/sys.html#sys.path

Питон берет пути к библиотекам из sys.path. Либо устанавливай их туда, где питон их ищет, либо добавь новый путь через PYTHONPATH
#41 #545933
https://docs.python.org/3.5/library/typing.html

Почему еще не обсуждали? Такой то охуенчик.
#42 #545939
>>545919
Алсо, для третьего лучше устанавливай через pip3
#43 #545951
>>545933
А нахуя оно? Нет, здорово конечно провести детальный lint, но рантайм игнорирует же.
#44 #545957
>>545951

>Explicit is better than implicit.



Hа самом деле просто потому что могут
#45 #545960
>>545957
Тогда можно сразу на Cython попробовать писать.
#46 #546123
>>545939
Луче python3 -m pip install ...
>>545933
Нинужно, удваиваю >>545951, ide должны страдать. вообще, нахуя оно нужно? Это как докстринги для сфинкса. Хотя этим гвида занимался, вообще непонятно нахуя, калл же полнейший. И вся суть динамики убивается, я хочу передать в функцию свой FakeInt, а мне ide пропердит, что я не то подсовываю.
#47 #546128
>>545933
Потому что говно. http://pastebin.com/92e6npXV По 9 строк на каждое объявление? Спасибо, нахуй.
#48 #546210
Хочу начать дрочить Пистон. Какие перспективы, подводные камни, etc.. ?
#49 #546211
>>546210
Передрочишь - пистон отвалится.
#50 #546232
>>546210
Перспективы - Варгейминг и многое другое.
#51 #546235
>>545933
Нашел как оно правильно называется - https://en.wikipedia.org/wiki/Gradual_typing

Ебать я умный
#52 #546471
>>545053
В регулярочку не можем и распараллеленно кукарекаем?
#53 #546481
>>546235
А нахуй ано нужно? Непонимаю.
#54 #546485
>>546481
Смотри на mypy
Короче можно будет сделать проверку типов или компалятор, сам cpython использовать их не будет, но другие интерпретаторы питона или библиотеки для проверки типов - будут. Возможно jython или ironpython будут.
#55 #546521
>>546485
Понятно.
#56 #546530
>>546471
Регулярочки для быдла, очевидно же. Они не заменят нормальный парсер.
#57 #546535
>>546530
Можешь пример парсера привести? Интересно глянуть что там
#58 #546544
>>546535
lxml, html5lib
#59 #546645
Нужно реализовать некую прогу, которая будет коннектиться к экселю и пиздить оттуда параметры, конкретно размер деталей на лист для покройки. Дополнительно нужно реализовать отображение поля с контурами этих деталей, конечно же в приемлемом масштабе, с возможностью их перетаскивать.

Если с экселем я знаю что делать, то с этим полем ебаным даже не знаю что предпринять акромя pygame что является очень унылым. Варианты?
#60 #546677
>>546530
Вот открой сорцы своих нормальных парсеров и посмотри, как там регулярочкой твое говно парсится. Быдло.
#61 #546686
>>546677
Ты дибил?
https://github.com/html5lib/html5lib-python/search?p=2&q=re+language%3Apython&type=Code&utf8=%E2%9C%93
Максимум 10 регулярок и только потому что они ультрапростые. Сам html приводится в вид дерева, в этом смысл. Готовое отдроченное решение? Нахуя оно нам надо, лучше напишу ещё одну регулярочку!
#62 #546687
>>546677
>>546686
Вы короче оба дауны.

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

Готовое отдроченно решение не везде работает, а также не для всех задач нужны. Когда у тебя есть готовые данные в виде например ссылок img src, то нахуй тебе это ебаное дерево?

Узко мыслите пограмисты.
#63 #546689
>>546687
Велосипедисты подтянулись.
#64 #546690
>>546689
Ну должен же кто-то пояснять инвалидам с костылями.
#65 #546695
>>546690
Что-то я тебя не понял. Ты предлагаешь регулярочки, говоришь, что либа зделана на регулярочках и называешь её костылями?
#66 #546697
>>546689
>>546690
лольнул, вся суть программинга итт
5 Кб, 201x251
#67 #546698
>>546697
Ебало своё закрой, чтобы тебя не видно тут было.
#68 #546701
>>546695
Я говорю, что использовать либу с деревом для обхода хтмл в ситуации когда нужно просто отфильтровать равносильное уебанство пропусканию сырого хтмл через регулярочку.
#69 #546703
>>546701
Ты пост прочитай >>544968
#70 #546716
>>546645
pygtk, pyqt, веб морда
#71 #546717
>>546686
Когда-то писал gui морду для форума и beautifulsoup ощутимо тормозил.
Переписал всё на регулярочках - стало намного быстрее.
#72 #546720
>>546717
Это понятная цепочка, она не противоречит тому, что я писал. Хотя не очень понятно что там может тормозить на форуме-то, там же просто текстовые поля.
#73 #546723
>>546720
beautifulsoup просто очень тормозная либа, хоть и удобная.
вроде как другие парсеры пошустрее.
#74 #546739
>>546723
soup умеет использовать другие либы: lxml/html5lib, достаточно чтобы они были установлены.
#75 #546767
>>546703
Нахуй мне читать мой же пост? Парсер джоя я почти захуярил, пикабу содержит в себе какой-то дичайший говнокод хтмловский. Такой вырвиглазный пиздец что хочется просто уебать лопатой фронтенд разраба и верстальщика.
#76 #546768
>>546717
просто кто-то не может в регулярочки кокок
#77 #546770
>>546768
Я и сам не фанат регулярочек. Где-то они к месту, где-то не очень. И поддерживать их тяжело потом. И легко ошибиться.
Но иногда без них никак. И быстро, да.
#78 #546780
>>546767
Ну и соси тогда.
>>546768
Регулярочки — грязь.
#79 #546806
Почему syncdb может не создавать таблицы для south не смотря на то, что их нет в базе?
#80 #546809
>>546806
хз
python manage.py schemamigration core --initial
Сделал? Что за таблицы для south? south_migrationhistory?
Аноним #81 #546895
>>546809
schemamigration говорит, что не таблицы south_migrationhistory. Вот она и не создается, да. Если есть время и желание помочь пиши на фейкопочту feikomilce.anonov@yandex.ru
Аноним #82 #546897
>>546895

>не


нет
#83 #546900
>>546895
Попробуй сделать вручную
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 должно это создавать.
#84 #546902
>>546895
И, кстати, а сами миграции у тебя уже были?
Или это новый проект? Если новый, то почему ты используешь south, сейчас же миграции встроены в джангу в новых версиях?
#85 #546908
>>546767
Можно файлик с кодом? Давно хотел прикрутить Джой и Пикабу к боту в телеграме
#86 #546940
>>546809
Ох этот ваш вонючий джанго.
#87 #546943
>>546940
Что не так?
#88 #546962
>>546943
Джанго.
#89 #546967
>>545908
Что ты там замазал питухон, anon@dbpp ? Уже лезу подключаться.
590 Кб, 1000x667
#90 #546997
Питоны, помогите разобраться с ситуацией.
Старательно набрал пример из книги Доусона. Сверял при этом с англоязычным оригиналом книги. Проблема такая: программа совсем не умеет блокировать победные ходы противника. Хотя по идее должна это делать.
http://pastebin.com/CKMNGZeT
#91 #546999
>>546997
Взял для сравнения оригинальный англоязычный код программы : http://courses.ischool.berkeley.edu/i90/f11/resources/chapter06/tic-tac-toe.py
Отрыл оба варианта в meld, но не сумел найти логических различий.
#92 #547000
>>546999
А этот вариант работает?
28 Кб, 673x727
35 Кб, 673x727
#93 #547011
>>547000
Да, работает. Последовательность действий пользователя воспроизвожу одинаковую. Поведение программы разное.
76 Кб, 460x613
#95 #547030
>>547013
Спасибо. Пофиксил отступ в функции winner(). Но баг остался.
#96 #547033
>>547030

> for moves in legal_moves(board):


должно быть for move
строка 136
67 Кб, 500x667
#97 #547035
>>547033
Точно! Спасибо.
#98 #547043
>>547030
Какие же кошки стремные. Как крысы.
#99 #547051
>>545883
консоль в твоей ёба ide не робит юникод по полной
http://pastebin.com/YrS8LbVh
ide для работы когда, хороша, а учиться нужно без ide
21 Кб, 415x285
#100 #547053
>>547043
Собираю фотки кошек с выразительными мордами вместо смайликов. Особенно люблю сумасшедшие морды.
#101 #547056
>>547051
Учиться надо у доски, мелом шкрябая код из тетрадки и построчно объясняя преподу что там происходит.
#102 #547057
>>545894
Что так многие хотят всех пересадить на p3? Ты ведь хуйню ему насоветовал ещё и запутал.
#103 #547058
>>547051
Дело не в консоли, а в том что он делает print list и печатается repr элементов
Если бы он написал
print advice[0]
или там
print ' '.join(advice)
Всё бы работало
>>547057

> Что так многие хотят всех пересадить на p3?


Недавно начали учить питон и начали с трешки и у них бугорт что почти везде в продакшене двойка
начинал учить когда питон был 1.6
105 Кб, 1383x555
#104 #547090
>>547058

>> Всё бы работало


То что на пике, не могу назвать "Всё бы работало".

>> Если бы он написал print advice[0]


не падало бы только в пе3, а пе2 падало с "UnicodeEncodeError: 'charmap' codec can't encode character u'\x97' in position 21: character maps to <undefined>"

>>Недавно начали учить питон и начали с трешки


А учить питон лучше с ассемблера
6 Кб, 297x84
#105 #547092
>>547090

> не падало бы только в пе3, а пе2 падало с


Умвр
#106 #547097
>>547092
>>547092
В линуксах не падает да. Но с кубиком то надо же что то делать?

>> Умвр


что это?
#107 #547104
>>547097

> что это?


умвр - "у меня всё работает".

> Но с кубиком то


Проблема в том что этот кубик там есть. Может ещё и другие символы попадаются какие-то подобные, их тоже все по одному заменять?
#108 #547116
>>547104
ДотрЁхал ты меня буду перекатываться, может быть. Спасибо что разобрал всё мною написанное.
А ещё pip под двойкой на винде падает из за юникода в доменном имени машины.
#109 #547126
>>547116

> на винде


Там много чего ещё работать не будет, в чем проблема поставить линакс на виртуалочке или vps?
#110 #547133
>>547126
Да вы заебали. За несколько лет на тройке ни разу не было так, чтобы под виндой что-то не завелось. Все норм работает. А если бы было не норм, то нахуй нужен такой питон.
#111 #547141
>>547090

>То что на пике, не могу назвать "Всё бы работало".


Это норма, просто в большинстве шревтов END OF GUARDED AREA выглядит как тире, а в этом - нет. Вообще для тире другой символ так-то, сайт сделали мудаки.

>не падало бы только в пе3, а пе2 падало


Юникодная строка же, системной кодировкой закодируется и выведется нормально. Другое дело что почему-то lxml возвращает в одном питоне строку, а в другом список с этой строкой.
>>547057
Потому что некрофилия это зашкворно.
#112 #547199
>>546895
Да были, вроде. Мне достался уже готовый проект, в котором впилен south, но почему-то не используется. Я решил это исправить. По дурости удалил руками таблицу south_migrationhistory, вот пытаюсь восстановить теперь.
>>546900
Охуеть совет
#113 #547355
Привет, питоногоспода.

Тут такая проблема. Есть код из Саммерфилда(Глава 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)

ЧЯДНТ? Эклипс как-то не так настроил, что ли? Помоги, анон, с меня как обычно.
#113 #547355
Привет, питоногоспода.

Тут такая проблема. Есть код из Саммерфилда(Глава 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)

ЧЯДНТ? Эклипс как-то не так настроил, что ли? Помоги, анон, с меня как обычно.
#114 #547363
>>547355
Эклипс у тебя второй питон запускает, в котором суперу нужно было передавать хотя бы один аргумент.
#115 #547375
>>547363
Спасибо
#116 #547378
>>547013
Что это за diff такой красивый?
#120 #547448
Бояре, принимайте неофита. Отучился 3 года в шараге, где одним из предметов было программирование 2.5 года, но преподом был ебучий маразматик, потому знаю ноль целых хуй десятых.

Решил теперь, когда курс программирования позади, начать учить язык сам. Выбрал змеюку эту. Скачал книжку Лутца хваленую, мне на голову прилетел тут же гигантский объем теории, еще и так заумно поданной, что я подался на ютюб за простыми лекциями по синтаксису хотя бы. Смотрю эти, тут хоть понятно : .com/playlist?list=PLbKwBvrpogbZfU50rPMmXow3aMFjIw4gk/ Наверняка закидаете говном, но щито поделать?

Подскажите, где найти самые простые задачи, а то везде натыкаюсь на что-то очень сложно (ну или я совсем тупой). Или же вшибать в голову Лутца, покуда не станет понятно?
Шапку читал.
Спасибо за помощь заранее.
На закуску мой великий препод, йоба изобретатель, которого выгнали в этом году, лол. https://www.youtube.com/watch?v=9_G9bfU5GfU
#121 #547449
>>547448

>где найти самые простые задачи


https://www.codecademy.com/tracks/python
72 Кб, 736x736
#122 #547452
>>547448
Ахаха ткнул видео
"мы изобрели наручный джостиковый манипулятор и заняли первое место по житомирской области"
74 Кб, 576x507
#123 #547466
http://pastebin.com/0zg94RCT
Flask'оводы есть тут? Читаю Flask Web Development, в шестой главе была реализована отправка сообщений на почту. Через консоль всё хорошо отправляется, а вот когда запускаю сервер, нет.

Сетаю логин, пароль:
set MAIL_USERNAME=<Gmail username>
set MAIL_PASSWORD=<Gmail password>
запускаю сервер, ввожу имя, приложение его принимает и записывает в базу, при повторном вводе имени он уже будет узнавать имя и писать новое приветствие.
Для отправки сообщений сетаю ещё это:
set FLASKY_ADMIN=<Gmail username>
И вот когда я вот все три хрени засетил, при вводе нового имени фурифокс выдаёт "Соединение было сброшено". Новое имя не добавляется в базу.
#124 #547469
>>547466
DEBUG mode включи, логи посмотри.

Хуй знает насчет фласка но в django лучше складывать письма в базу и по cron отправлять их из другого процесса. Потому что пока твоё ебаное письмо, особенно через сторонний мэйл сервер отправиться клиент будет ждать, сервер будет заблочен да и за ддосить тебя так легко будет.
В django есть готовые решения для всей этой почтовой хуйни.
21 Кб, 211x303
#125 #547493
>>547469
Ой вей, я таки забыл про debug из-за shell manager, шаблон он не мог найти, спасибо. Правда странно что в книге про эти 2 шаблона не было написано, нашёл их на гитхабе у автора. Вообще книга вроде хорошая, но странная, иногда умалчивает про содержимое и создание некоторых файлов, вот шаблоны нужные для 6 главы лежат в гите для 7-ой.
https://github.com/miguelgrinberg/flasky
#126 #547495
>>547493
А вот это пробовал?
http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world
Многие рекомендуют эту доку. Даже перевод на русский был где-то(на хабре вроде)
#127 #547497
>>547495
Только что понял что это от того же автора.
#128 #547514
>>547495
Пробовал, на openid слился, хотел через его же другую статью, OAuth2 запилить вместо openid и продолжить туториал, не получилось.
#129 #547594
>>547449
Классно, спасибо большое!
#130 #547630
Кто-нибудь может подсказать мне, как примерно должен выглядеть код для этой примитивной задачки:
https://www.reddit.com/r/beginnerprojects/comments/1bytu5/projectmenu_calculator/
Все мои варианты слишком костыльные и похожи на удаление гланд через анальное отверстие. Я уверен, что есть способ изящно, аккуратно и с минимумом кода написать эту программку.
мимоньюфаг
#131 #547636
>>547630
Пилишь дикт с номерами, названиями и ценами, гоняешь цикл в котором считываешь строчку и вытаскиваешь цены из дикта. В чём проблема?
#132 #547637
#133 #547641
>>547637
>>547636
Блять, лол, я почему-то забыл, что можно списки в качестве value в словарях использовать. Видимо, потому что до сих пор такое не применял, а лишь где-то слышал об этом.
Спасибо вам большое!
Я совсем ньюфаг, не бейте.
#134 #547719
Смотрю Introduction to Python от O'Reilly и визжу как сучка. Всего-то дошел до if, else, ==, !=, а уже восторга полные штаны. Хочу поскорее дойти до момента, когда смогу обрабатывать данные введеные с клавиатуры юзером (интуиция подсказывает, что за это отвечает какой-нибудь raw_input).

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

Возможно подскажите как вы вообще записываете свои безумные идеи, как их структурируете? Понятно, что когда делаете чужую программу - там тз. А своя ведь это постоянный поток сознания и перепилов. То добавить, се. Брать отсюда сюда.

Или там первую неделю записываете все необходимые штуки, вторую структурируете, а третью пишете (образно)?
#135 #547720
>>547719
Когда я начинал кодить частенько писал что-то как придется, а потом переписывал заново. Иногда по 2 раза.
#136 #547730
>>547719

>А своя ведь это постоянный поток сознания и перепилов. То добавить, се. Брать отсюда сюда.


Поумерь пыл, бери что тебе по зубам реально сделать за неделю. Своего рода методология agile при работе в одиночку. Доведи до минимально рабочего состояния, а потом навешивай свои безумства небольшими порциями с релизами каждую неделю. Рабочий прототип сильно приводит в порядок мысли и яснее становятся перспективы и возможные трудозатраты.
#137 #547741
Я не понимат, как использовать пост параметры?

[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
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]
#137 #547741
Я не понимат, как использовать пост параметры?

[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
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]
#138 #547776
Программач, с тебя

TOП 10 ЭВРИ КУЛЛ ПРОГРАММ НА ПАЙСОНЕ!!!:

(ну хотя бы 5, ладно)
#139 #547793
>>547776
А как оценить насколько программа КУЛЛ? По какому критерию.
#140 #547794
https://www.python.org/dev/peps/pep-0505
Бля, ну почему не как в кофейке?! Мне всё равно придётся None присваивать этой залупе. В языках со статической типизацией-то понятно, там надо объявлять переменную, но тут-то, в динамике, сам пёс велел.
#141 #547795
>>547741
Ну и блевотина.
#142 #547797
>>547794
Иди на хуй. Пусть будет NameError вместо твоей неявной залупы.
#143 #547799
>>547797
define "неявной"
Чем None в данной ситуации отличается от необъявленной переменной? Исключая опечатки. Я же не предлагаю везде игнорировать отсутствие связи имя-объект, но раз уж для этого зделали оператор, то почему бы не зделать до конца?
сам иди нахуй
#144 #547802
>>547794
ненужная хуйня. впрочем, в божественной двоечке такого говна не предвидиться, у неё стабильный синтаксис и апи. а бета тестеры должны страдать
#145 #547803
>>547802
Легаси закукарекало заместо авроры.
24 Кб, 804x796
#146 #547806
>>547799

>Чем None в данной ситуации отличается от необъявленной переменной


Вот именно этим и отличается.

На кофейке/жабаскрипте частенько приходится минут 15 тратить на хуйню копаясь в дебаггере. Не обязательно конечно от необъявленной переменной, но из-за подобной хуйни (чаще всего похереный this). undefined становится любимым словом.

После того как я вернулся обратно на питон, ко мне вернулась радость жизни, нормализовался сон, пробудился аппетит, появились деньги и хуй крепко встаёт.
#147 #547809
>>547806
Эээ… Я говорю только лишь о поведении при использовании этого оператора. Всё остальное чтобы осталось как было. Хотя, с другой стороны в __init__ такое поведение лишь мешает. Может ты и прав.
#148 #547874
Поясните приобщаещемуся. Как внутри метода сдетектировать были ли переданы аргументы или нет. Пока накостылил через магические числа:

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
Но колхоз же, как по уму делать?
#149 #547880
>>547874
Да почти также, ставят None или дефолтное значение. Если у тебя ничего умного по отсутствию параметров не происходит, тогда вообще убери дефолтные значения, пусть исключение возникнет.
#150 #548183
Посоны, вот во втором пистоне map работает нормально. То бишь

> a = []


> map(a.append, [1, 2, 3])


> a == [1, 2, 3] # True



А в третьем надо делать list(map(a.append, [1, 2, 3])). Быстрое гугление не помогло, да и спать собираюсь. Как добиться в третьем такого же поведения, как во втором?
#151 #548184
>>548183
Это я к тому, что map не выполняется сразу, а возвращает объект map'a.
#152 #548191
>>548184
Итератор он по сути возвращает. Это не значит, что он ненормально работает - так память экономится и всё быстрее? работает.
#153 #548192
>>548183
Делай a.extend([1,2,3])
В третем питоне map ленивый
#154 #548215
>>548192
А есть разница между extend и банальным a + [1, 2, 3]?
14 Кб, 213x298
#155 #548218
>>548215
Да.
a+[1, 2, 3] создает новый список.
a.extend добавляет элементы в уже существующий.
a+=[1,2,3] впрочем тоже
#156 #548509
Выслали тестовое задание с требованием чтобы оно на python3 работало.
Охуеть пацаны.
т.python2-боярин
#157 #548515
>>548509
Ещё и git хотят вместо лампового hg.
Куда катится мир.
#158 #548624
Можно как-то заблокировать питоновскую очередь (Queue) чтобы пока я что-то с ней не сделал, все остальные треды, которые хотят записать в нее или считать с нее зависли пока я им не разрешу?
#159 #548628
>>548192
Ну то что я написал про список, это только для примера.
#160 #548631
>>548624
Залезь вовнутрь, у ей там неонка лок. Залочь его. Только почему не обернуть её в свою Queue с локом?
#161 #548634
>>548624
Да. threading.Lock
#162 #548636
>>548631
>>548634
Ладно, смотрю-разбираюсь.
#163 #548637
>>548628
Я понял.
Почему просто не делать в цикле обычном что-то со списом?
map тут говнокод если честно. Я раньше любил такое тоже, но потом вырас и стал писать попроще.
Ну делай list(map()) если оче хочется.
#164 #548651
>>548637
Да я собственно ради интереса больше. Переделал в генератор списка и не выпендриваюсь.
#165 #548704
>>548634
http://ideone.com/vU0MPL
Чет не блочится нихера.
#166 #548708
>>548704
Шутник дохуя.жпг?
Ты же в одном только потоке делаешь acquire, что он тебе должен залочить?
#167 #548710
>>548708
Блин. А как в одном треде вызвать блокировку всех остальных?
#168 #548711
>>548710
Остальные должны тот же лок эквайрить, тогда будут ждать, пока этот не отпустит. Но вообще, ты хочешь, похоже, семафор.
#169 #548715
>>548710
Ты пробовал доки/теорию читать?
#170 #548730
Кто нибудь использовал PySFML или KIVent для геймдева? Как прозводительность/синтаксис? Или может посоветуете другие живые библиотеки?
#171 #548766
>>546686
вы все ебанутые дебилы.
нормальный разбиратор xml/сломанного_html внутри не должен использовать регулярки ни на каком этапе. там осуществляется _синтаксический разбор_ по классическим алгоритмам.
#172 #548799
>>548766
Какая разница, если ты также будешь проверять каждый символ на a-z?
#173 #548834
Такая тема, мне нужно пройти по списку URL и по-вытаскивать title, meta, h1 в таблицу для проверки. Если с первыми двумя проблем не возникает, то заголовки на разных типах страниц в разных местах. Сейчас я просто прогоняю повторно по пустым ячейкам, указывая другой путь.

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

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
#174 #548835
>>548834
имеется ввиду лестница из вложенных одна в другую конструкций try-except
#175 #548838
>>544442 (OP)
Задачка по информатике: Напишите программу, которая вводит натуральное число 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)? Понимаю, что разница вряд ли ощутится, но что является правилом хорошего тона?
#176 #548842
>>548715
Думал, что само получится.
>>548711
Мне просто хотелось чтобы все треды писали в одну очередь свои логи, а я бы потом их сохранял куда нибудь. Вот упрощённый пример того что я делаю. Не идеально, иногда порядок сбивается, но я поправлю.
http://ideone.com/XmIwkF
#177 #548853
>>544442 (OP)
Только-только начал python смотреть. Подскажите как в вот таком списке
[1, 1, 1, 1, 1, 1, 1, 0, 0, 0]
находить три подряд идущих единицы? В голову приходит только в цикле смотреть i, i+1, i+2, но что-то по моему это не то.
#178 #548856
>>548853
for n in range(len(l)-2): if l[n:n+3] == [1,1,1]: print n
#179 #548857
>>548856
О, круто, спасибо.
#180 #548859
>>548856
Мед-лен-но, выполняешь три прохода вместо одного
#181 #548873
>>548834
for url in list_of_urls:
....try:
........h1 = ...
........break
....except:
........continue
else:
....# nothing found
239 Кб, 1959x1959
#182 #548875
>>548838
print(tuple(range(2, int(input()) * 2 + 1, 2)))
#183 #548877
>>548838

>Еще один нубский вопрос: в вычислениях стоит использовать дробь (1/4) или floating point число (0.25)?


Если нужна точность, то fractions или decimal.
#184 #548878
>>548842
Зделай отдельного воркера, который забирает из очереди объекты и пишет их в лог. Нахуй наследоваться от очереди?!
#185 #548881
>>548853
counter = 0
for x in l:
....if x == 1:
........counter += 1
....else:
........counter = 0
....if counter == 3:
........yoba!
#186 #548886
>>548875
Изящно получилось, спасибо, а я и не подумал об этом.
65 Кб, 771x872
#187 #548911
Анон, только сегодня начал учить, объясни, хули тут толком сделать надо?
Я так понял, что надо в первой строке условие, чтоб ответ был больше 5, а во второй, чтоб он был меньше 5. Но почему оно не работает?
Да, и что значат цифры в скобках в строках принт?
#188 #548912
>>548873
Так у меня цикл перебора УРЛов остановится по break при первом же найденном заголовке.

Тут скорее
try:
h1 = g.doc.select('/html/body/bla-bla-bla/h1').text().encode('utf-8')
continue
except:
pass

g.doc.select возвращает исключение, если не удается найти элемент. Мне нужно чтоб я мог нахуячить несколько селекторов и если первый сработал, то переход к следующему УРЛу, а если вызвал исключение, то пробуем следующий селектор.
#189 #548914
>>548911
Просто эти задачки были до этой абсолютно про другое, лол. И def, как и этих цифр в скобках, раньше не было и объяснений, че это, не дали. Потому и туплю, как кретин.
#190 #548916
>>548911
Что непонятного, подставляешь условия из инструкций в пропуски.
#191 #548919
>>548916
Дай, пожалуйста, пример. И что значат цифры после принта?
Просто, если я выполняю первое условие, оно трижды штампует единицу и задача не выполнена. Если второе - трижды -1. Если ни одно - трижды 0.
#192 #548924
>>548919
К примеру, во 2-ой строчке тебе нужно заполнить условие так, чтобы оно проверяло, больше ли answer 5, т.е. if answer > 5: return 1
Принт вызывает функцию (которая выше) с цифрами, указанными в скобках. Это потом будет, дальше по программе
#193 #548927
>>548924
Ой, я просто слепошарый уебок. Я в упор не видел, что answer - переменная, лол. Я задавал свои равенства/неравенства вместо того, чтобы просто написать слово...
Спасибо, уже все увидел.
#194 #548943
>>548912
Тогда вложенный цикл.
#195 #548961
Кто-нибудь с xlwt, xlrd И xlutils имел дело?
Требутеся следующее:
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, то проблемы с памятью исчезают, однако же попытка изменить имевшуюся в темплейте ячейку приводит к тому, что эта ячейка изменяется во всех листах.
#196 #548965
Что значит звёздочка в параметрах? Просто звёздочка без идентификатора. Везде в asyncio так. Пердон даже ошибку не кидает, но пойму нахуя она сдалась?

def lol(a, ^, x=4): # вместо ^ звёздочка
__print(a)
__print(x)

lol(2) ok
lol(2, 2) хуй, пока после звёздочки хоть какой-нибудь идентификатор не напишешь.
#197 #548968
>>548965
Отделяет позиционные и keyword (забыл как по-русски) аргументы при определении.
#198 #548971
>>548968

И правда.

def lol(a, ^, b, x=4):
__print(a)
__print(b)
__print(x)

lol(2, 2) # fail
lol(2, b=2) # ok
#199 #549069
>>548968

>keyword


Именнованные
#200 #549091
Блядское PyQt5 под убунту быстрым способом как поставить? Сегодня проебался с ним пол дня и поставил в виртуалку на ноуте, как-то еще ебаться на стационаре дома не хочется, а осваивать Qt хотелось бы.
#201 #549096
>>547874
для таких случаев придумали args и *kwargs
#202 #549097
>>549096
абу, пидор, сожрал всю разметку,
там одна и две звезды соответственно
#203 #549104
>>549091
Из репозитория же за секунду ставится.
#204 #549109
>>549104
guide me bro.
#205 #549123
>>549109
Учись искать информацию, это тебе очень пригодится, лентяй ебаний.
http://askubuntu.com/questions/279421/how-can-i-install-qt-5-x-on-12-04-lts
#206 #549124
>>549123
Я умею гуглить, просто впадлу сейчас. Спасибо.
#207 #549144
Как по-правильному должен выглядеть импорт?

У меня подключены всего 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]
4 Кб, 433x96
#208 #549146
>>549144
Что-то накосячил с тэгом. Вот, в общем.
#209 #549151
>>549146
что тебе не нравится? Я не вижу способа сократить импорт еще только если импортировать сразу всю либу. Алсо в некоторых редакторах весь импорт можно скрыть.
#210 #549156
>>549146
>>549144
Я не работал со scrapy, но разве импортом всей либы в начале, ты не загружаешь туда же паука?
#211 #549181
Ебанутый, платиновый вопрос, но все же спрошу.

Как сделать так, чтобы выполняемые мною скрипты сразу же не закрывались?

input() вконце не всегда срабатывает. Перестал почему-то работать. Энвайромент прописывал.

В чем проблема? Гугл пока не дал толкового ответа, т.к. из-за отсутствия опыта не могу более менее понятно сформулировать для него запрос.

Короче, по простому: как сделать так, чтобы мои скрипты не появлялись на 1ну секунду "досовским" окном и исчезали, а чтобы не закрывались и я смог прочитать что там происходит?
#212 #549182
>>549181
Запускай их через cmd.exe
#213 #549215
>>548961
В общем, пришлось решить топорно: созддать новый лист и просто скопировать туда все иммутабл атрибуты из копируемого, затем насоздавать новых строк, колонок и ячеек и точно так же с ними поступить. Вроде бы всё работает нормально, можно перезаписывать всякие ячейки и так далее. Даже почти работает копирование из другого воркбука — если изменить значение ячейки темплейта до копирования, то ломаются всякие эти sst_idx'ы и некоторые значения снова перезаписываются. Не стал уж разбираться, так как пока такого не требуется.
http://pastebin.com/gUzA8hFc
#214 #549216
>>549215
неправильная ссылка, вот — http://pastebin.com/BBwV8Wap
61 Кб, 1271x241
#215 #549220
Объясните, что за хуйня? Как работает этот translate?
#216 #549226
>>549220

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
#217 #549227
>>549220
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.
#218 #549264
>>549156
Судя по всему, нет.
Вот тут в примере так же: http://doc.scrapy.org/en/1.0/topics/practices.html
#219 #549296
Посоны, что ньюфагу учить? Python the hard way говорит учи второй, другие говорят, что можно и третий. Я начал учить третий.

Похуй или все же второй учить?
#220 #549301
>>549296
Третий. Авторам впадлу книжку переделывать и тройку учить.
402 Кб, 1879x835
#221 #549381
Привет, питоний тред.
Последние выходные работаю над платиновой задачей двача - скрапер двача.
Но не всего двача, а только вебм.
Сегодня закончил более-менее работающую версию. Скрипт сразу сохраняет в модель джанги.

Предлагаю скооперироваться и сделать свой проект - хостинг вебмок. Понимаю, задача нетривиальная, но в начале сделаем все в лоб и просто. Чтоб было. Будем брать вебмки с двача, составлять рейтинг, может сделаем статистику. В общем, есть куда развиваться. Потом каждый кто захочет может сказать, что участвовал в опенсорс проекте (не обязательно показывать ту часть, где есть сосач).

Скрипт и технические детали попозже вброшу, если появится интерес.
#222 #549383
>>549381
А чего нетривиального то?
#223 #549386
>>549383
Ну качественный хостинг видео не так просто сделать. Просто чтобы видео отдавал - ради бога, а если много пользователей? Еще и нетривиальная задача собрать анона в работоспособную команду.
#224 #549388
>>549386

> , а если много пользователей?


Это не проблема твоего приложения вообще. Видео будет отдавать nginx. Если пользователей будет много - ставишь несколько вебсерверов. Балансировка нагрузки между ними есть в самом же nginx http://nginx.org/en/docs/http/load_balancing.html
Чтобы синхронизировать библиотеку файлов между серверами используешь glusterfs.
Или тупо rsync по крону. Или если бы файлы были большими - внутренние торренты, но это заморочка и тут смысла нет.
#225 #549390
>>549386
Короче тут скорее вопрос какой ты хостинг себе можешь позволить и насколько жирный у него канал, чем софта.
Но вообще идея интересная, можно как-нить скооперироваться.
#226 #549393
>>549381
Жыдхаб бы сразу запостил. Так если бы кто даже и захотел, че делать дальше - хуй знает.
#227 #549395
>>549388
Да, в теории то понятно. Я вот сейчас смотрю эти лекции, там примерно это же говорили. http://rutracker.org/forum/viewtopic.php?t=4979701

>>549390
Хорошо.

>>549393
Сейчас запилю чистый репозиторий. Как раз доделывал кое что по мелочи. Вот скрипт.
http://ideone.com/gnMLdU
Вот модификация для сохранения в джангу.
http://ideone.com/3yw9Lh
Попозже расскажу подробнее. Наверно по коду так сразу и не поймешь что там происходит.

Работает под тройкой. Но если поправить super и изменить импорты, скорее всего будет и под вторым. До этого у меня они были настроены, но для красоты убрал.
#228 #549399
>>549395

> скорее всего будет и под вторым


А смысл? Делай уж под тройку.
#229 #549400
>>549399
Ну да, просто была мысль сделать его универсальным, но подводных камней и правда много. То, что я выложил - версия для тройки.
#230 #549402
>>549400
Так это ж парсер только. Он у тебя вроде бы работает уже. Джангу давай. Парсеры в репозиторий туда же сложи.
#231 #549411
>>549402
В джанге пока ничего нет кроме админки. Сам скрипт же качает, записывает лог. А если запустишь второй файл, то сохранит в джангу (которую сейчас выложу). Только админка. Настраиваю репозиторий. Просто не спешу.
#232 #549434
>>549402
https://github.com/aq1/WillBeams

Так, вроде работает. Название рабочее (Will Beams), я не против поменять.
#233 #549437
>>549434
Какая странная структура у джанго проекта у тебя
#234 #549438
>>549434
YOBA-VIDOSI-2015
#235 #549439
>>549437
Ну на работе так. Мне по нраву. Каждая модель в своем файле - удобно. Саму папку проекта тоже убираю (зачем она)? Пока все работает отлично.
#236 #549443
>>549439

> зачем она


Она незачем, но вот конфиг ты в отельный package вынес, потому что обычно конфигов несколько - базовый и унасленованные от него обычный, dev-сервер, рабочии локальные копии разработчиков.
Настройки у них разные.
#237 #549448
>>549439
Загрузку webm`ком мог бы через management command сделать.
#238 #549450
>>549443
Не, ну про local_settings то я понимаю зачем.
>>549448
Хорошо, делай pull-request или хотя бы ссылку дай на пример, посмотрим.
#239 #549451
>>549450
https://docs.djangoproject.com/en/1.8/howto/custom-management-commands/
Я сейчас спать ложусь, не сегодня.
#240 #549460
>>549451
От джанги, насколько я понял, требуется только отображение? Загрузку же можно через urllib запилить. У меня уже есть парсер медиа с двача, например. Нужно только пофиксить иногда возникающую проблему с cloudflare.

мимотреднечитал
#241 #549465
Ну что, раз есть интерес, давайте создадим какую нибудь конференцию. Типа в глиттере или где лучше? Я вообще не разбираюсь.

>>549460
Скачиватель есть уже. Джанга будет показывать, да. Но я не использую urllib - он медленный. httplib позволяет на одном http соединении все качать. Я вбрасывал в прошлом треде тесты по времени.
#242 #549471
Ладно, давайте с завтрашнего дня будем уже обсуждать, если интерес не упадет.

А, забыл сказать. Я могу (и предлагаю) использовать Django, Django Rest Framework и Angular.
#243 #549472
>>549471
А еще макака говорит, что гиттер в спам листе. В репозитории в ридми есть ссылка.
гиттер.im/aq1/WillBeams
#244 #549478
>>549465
Посмотрел те тесты. Весь прикол в том, что ты для httplib устанавливаешь одно соединение, а через urllib каждый раз создаёшь новое. В urllib есть штука, которая позволяет запилить свой менеджер подключений. Как допилю тесты, выложу.

Кстати, а почему вообще джанго?
#245 #549483
>>549478
Потому что самое популярное. Можно использовать для получения профита ирл. А что ты предлагаешь?
#246 #549488
>>549483
Да хер знает, на самом деле. Я с веб-технологиями не особо знаком. Когда-то, лет 6 назад, учил пилоны на спецкурсе. Через пару лет пробовал pyramid, но всё как то не придумывал, что бы интересного нового сделать.
В общем, я к чему это - есть же побыстрее фреймворки. Те же фласки всякие. Насчёт удобства и красивостей, правда, не уверен.
#247 #549496
Мне кажется джанго будет оверхедом для такого приложения.
#248 #549502
>>549488

>>В общем, я к чему это - есть же побыстрее фреймворки. Те же фласки всякие. Насчёт удобства и красивостей, правда, не уверен.


Да, Tornado например. Tornado — расширяемый, не блокирующий веб-сервер и фреймворк, написанный на Python.

На flask тоже подобные модули можно поставить, джанга в отсосе.
#249 #549504
Похуй, пусть оп решает, иначе это рискует перерасти в срач о фреймворках.
#250 #549506
Дайте пожалуйста ликбез по веб-фреймворкам. Что скажете о Flask и Bottle?
#251 #549510
Предлагаю перенести обсуждение в гиттер. Я все таки склоняюсь к джанге. Кто на должном уровне знает другой профессиональный фреймворк?
На торнадо можно сделать транслировали в прямом режиме какие вебмки прямо сейчас касаются например.
#252 #549512
>>549506
Ты не уходи из треда, тут тебе все пояснят сейчас.
#253 #549531
>>549488
Если аггрессивно использовать кеширование то джанга будет летать.
>>549502
Они для разных вещей немного.

Вообще смотри выше. Оснавная нагрузка будет на отдачу статики тут.
#254 #549533
>>549531
Написал readme для скриптов и самого проекта. Спрашивайте вопросы, если что.
#255 #549535
>>549533
Ой, ссылка приклеилась.
#256 #549545
>>549535
Где оно?
#257 #549549
Втыкаю в документацию Scrapy и охуеваю. Как можно было создать библиотеку, которую НАСТОЛЬКО сложно осилить?
#258 #549550
>>549545
В репозитории. >>549434
#259 #549551
>>549381
Лучше сделайте анимешный хостинг на замену закрывшемуся pomf.se
Шоб вебмки, картинки и все как полагается, без рекламы и капч.
#260 #549552
>>549551
Хотя что-то я тупанул, он и так обзавёлся десятком клонов. Исходники открытые же. Сорри.
#261 #549567
>>549533
О, я хотел с django rest framwork разобраться как раз.
Может завтра заморочусь попробую к твоей штуке прикрутить.
#262 #549582
Загатовки классов для карточной игры
Может кому пригодиться

http://pastebin.com/GPFkjR0F
#263 #549698
>>549582
Кому этот понос может «пригодиться»?! пиздец компутар саенц
#264 #550034
https://www.linux.org.ru/polls/polls/11912496

Видали, господа? Линуксоиды выбирают Питон.
#265 #550039
>>550034
И нахуй ты это притащил? На лоропараше одни школьники-первокурсники-с-питоном-вместо-головы и устаревшие-сорокалетние-быдлокодеры-с-сишкой-вместо-голосы.
#266 #550040
>>550039
Ну только не стукай, профессионал с зарплатой в 120k$.
#267 #550041
>>550039

>с-питоном-вместо-головы


Ты так говоришь, как будто это плохо.
#268 #550042
>>550041
Как что-то хорошее. Им дали более быстрый и удобный Го, но нет, хочу жрать говно.
#269 #550043
>>550042

>более быстрый и удобный


Сдаётся мне ты пиздишь.
#270 #550044
>>550042
Гоферы теперь шитпостить стали? Иди в свой тред.
#271 #550045
Как что-то хорошее. Им дали более быструю и удобную Джаву, но нет, хочу жрать говно.
#272 #550047
>>550045
Как что-то хорошее. Им дали более быстрый и удобный фортран, но нет, хочу жрать говно
#273 #550048
>>550045

>джава


>удобная


>быстрая

#274 #550049
>>550048
Да ладно вам, джава как язык заебись для новичков, погружающихся в увлекательный мир программирования.
#275 #550051
>>550049
Громоздкая, как кобол, и на пеке не нужная.
#276 #550054
>>549488

>есть же побыстрее фреймворки. Те же фласки всякие.


Минималистичнее != быстрее.
В жанге стек вызовов лучше оптимизирован, чем во всяких ваших фласках.
Что быстрее в фласке - это jinja2, но в джангах 1.8+ её можно включить вместо дефолтного движка темплейтов.
#277 #550067
#278 #550068
>>550051

> на пеке не нужная.


Почти все IDE написаны на джава. Что pycharm, что pydev
#279 #550098
>>550068

>IDE


Но зачем? Есть ведь охуенные редакторы: Vim, Emacs, Sublime Text.
#281 #550123
>>550068
Ну да, много конечно, но я бы не сказал, что почти все. Да и я как то сомневаюсь, что всем, кто изучает яву, будет интересно пилить IDE.
#282 #550125
>>550123
Я не про изучение джавы или пиление, а про то что софт на десктопе на джаве есть. Его довольно много, но обычно ему есть альтернативы, а вот в сфере ide этих - фактически нет.
#283 #550150
Пацаны, подскажите как делается прогресс-бар в консольке. Например когда emerge в гентяче что-то там делает, то у него как бсд такая штука отображается | сменяется на /, потом на -, потом на \ . И так по кругу. Хочу запилить себе что-то вроде этого, только с циферками типа столько-то обработано, осталось столько-то.
#284 #550152
>>550150
Через terminal escape sequences либо через ncurses
Но это вручную геморно делать
Вот либа умеет курсор двигать
https://pypi.python.org/pypi/blessings/
5 Кб, 1183x551
#286 #550155
>>550150
Или возьми dialog консольную утилиту запусти её с ключом --gauge text 20 70
И пиши на её stdin сколько процентов прошло
Выглядить будет так
#287 #550156
>>550152
>>550153
Благодарствую
#288 #550232
Решил сегодня вернуться к истокам и написать что-нибудь на пайтоне, стал смотреть примеры, так аж глаза заболели от синтаксиса, а ведь когда-то он казался практичным. Теперь понимаю хейтеров.
#289 #550239
>>550232
Пайтон убогий недоязычок для обучения, типа современного бэйсика, только с ОТСТУПАМИ
30 Кб, 2000x617
#290 #550245
Никто не знает либ для вывода в GUI формул типа пикрелейтеда.
#292 #550251
>>550125
Ок, спасибо. В текстовом поле PyQt отобразится?
#293 #550253
>>550245
Я использовал sympy + mathml (он там требует преобразование хитрое чтобы браузер показал как надо, но работает). Ну и webkit какой-нибудь для отображения бери.
#294 #550292
>>550232
А сейчас на чём пишешь? покормил
#295 #550293
>>550292
c#. энтерпрайз.
74 Кб, 1024x728
#297 #550299
>>550296
Продолжай писать на недоязычке для школьников пока серьезные дяди делают энтерпрайз решения.
#298 #550302
>>550299
Толстячок.
#299 #550369
>>550299
Иди лобай на гитаре свой до диез :3, а в наш уютный тред нелезь.
#300 #550373
Салют погромач, помоги ньюфагу, есть небольшая проблемка.
Короче программа должна принимать несколько аргументов через getopt и делать разные вещи, вроде все просто, однако я наткнулся на странную хрень тут, смотри.
http://pastebin.com/JmhPqn31
Похоже на тупую ошибку но я чот не вижу.
#301 #550383
>>550373

> 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
#302 #550387
>>550383
Луче docopt.
#303 #550389
>>550383
Спасибо бро. Еще когда в первый раз увидел питоновские ин ор почувствовал ноющую боль в ноге в предвкушении свинца.
#304 #550463
Каким образом можно решить уравнение 18*x = 36 и найти х?
#305 #550464
>>550463
В четвертом классе будете проходить.
#306 #550467
>>550464
нет ну серьезно, как в питоне символьно решить, не вводя х?
#307 #550469
>>550467
Ты нормально можншь объяснить, что тебе нужно?
#308 #550472
>>550469
Есть матрица которую я забиваю в ячейки выражениями вроде R1+Cp+1/pL этой хуйни дохуя, потом умножаю на вектор состоящий из U1...UN, которые являются неизвестными и прирываниваю к вектору Y, который заполнен значениями. Нужно находить U, проблема в том , что структура постоянно меняется.

Как найти U? Фишка в том, что это нахождение нужно будет повторить 500-1000 раз.
#309 #550473
>>550472
1) Метод Гаусса
2) Метод Якоби
#310 #550476
>>550473
Numpy/Sumpy имеют эту хуйню внутри?
#311 #550481
>>550476
>>550473
Уже нашел.
#312 #550526
>>550473

> 1) Метод Гаусса


Не рекомендую.
#313 #550541
Никто не знает где найти все видосы https://buildasaaswithflask.com/ ?
#314 #550542
>>550526
Для тренировки и написания руками с нуля пойдёт.
#315 #550550
>>550541
Нигде, кому это говно может понадобиться?
#316 #550552
>>550550
Мне понадобилось.
18 Кб, 222x227
#317 #550593
Бля, питон-ctypes и кучи куч си кода - СЛОЖНА. Всю ночь сидел.
#318 #550594
>>550593
Потом что надо было SWIG юзать
#319 #550598
>>550594
Уже слишком уставший чтобы вникать. Скажи в двух словах.
Мне надо дергать сишные функции из .so и обрабатывать их в питоне, при этом зависимостями для конечного юзера должны быть только та .so и сам питон для исполнения моего .py.
Свиг - то, что мне нужно?
Если да - ну штож, я дурак и делал мартышкин труд. Пошел спать.
#320 #550600
>>550598
У тебя есть исходники этих сишных функций? SWIG позволяет почти автоматически сгенеровать обертку для этих сишных функций в виде питоновского модуля.
http://www.swig.org/tutorial.html вот тут простой пример.
#321 #550602
>>550600
Исходники есть. Спасибо, анончик, завтра потыкаю свиг.
165 Кб, 1280x1024
#322 #550739
Питоны, помогите разобраться.
Есть моя переделка викторины из книги Доусона:
http://pastebin.com/Rt4ha7Xy

Проблема в работе фунцкии save_score(). Она то ли не может прочесть список кортежей из файла, то ли не может его толком сохранить.
#323 #550743
Вот что пишет функция save_score()
[code lang="text"]
Теперь нужно увековечить Ваша достижение!
Введите Ваше имя: 45
Загружаю таблицу результатов.
Ran out of input
Таблица результатов пока пуста, но мы это сейчас исправим!
[('45', 1)]
Достижение увековечено!
[/code]
#324 #550744
>>550739
Открывай файл в режиме чтения когда читаешь его а не wb+
#325 #550746
>>550739
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.

#326 #550747
>>550744
В чём подводный камень?
#327 #550750
>>550747
w+ перезаписываешь файл. ты можешь из него потом читать, но только то, что там туда только что записал.
r+ открывает файл не перезаписывая и позволяет читать и писать в него.
a открывает файл на append - добавление в конец.
Но тебе нужно сначало прочитать из файла в режиме r, потом открыть в режиме w и записать результат.
#328 #550752
>>550750

>w+ перезаписываешь файл. ты можешь из него потом читать, но только то, что там туда только что записал.


То есть если в файл, открытый в режиме "w+", ничего не писать, при использовании метода .close() он сохраняется как пустой даже если до момента его открытия он пустым не был?
#329 #550753
>>550752
Нет, он его обнуляет в момент open, а не close. Как только ты делаешь open(..'w+') файл становится пустым.
#330 #550760
>>550753
А прочесть из него можно только то, что было записано (в буфер файла) после open(.. "w+")?
6 Кб, 252x160
#331 #550763
>>550760
Да.
Если хочешь и читать и писать и чтобы файл не обнулялся используй r+.
#332 #550806
>>550763
Спасибо. А то в учебнике об этом подробно не говорится.
#333 #550808
>>550806
Потому что официальную документацию читать надо, а не хуйчебники.
#334 #550810
>>550808
Без хуйчебников будет совсем уж сферическая теория в вакууме. Задачек нет.
#335 #550811
>>550810
Задачки пора свои иметь, большой уже мальчик.
#336 #550856
>>550810
Это значит учебник хуевый. Хороший учебник лучше документации для понимания языка. Не считая синтаксиса конечно, но для особо упоротых случаев есть Лутц, который жирнее официальной документации раза в 3, кек
#337 #550867
Ван-сум всемогущий! Наконец-то я понял как финализировать субпроцессы запущенные в фоновых тасках в asyncio. Сука, наконец-то всё отработало без экзепшенов. Кстати asyncio советую брать самый последний из репы, очень дохуя отличается от коробочного в плане этого самого хэндлинга.
#338 #550883
>>550867
task.cancel()? Или ты о чём?
#339 #550891
>>550883
Exception ignored in:
Task result ignored
и ещё много подобного.

Вот это ещё не до конца поборол:
signal handler must be signal.SIG_IGN, signal.SIG_DFL
Например если вызвать cancel когда ещё create_subprocess_exec не отработал. Надо наверное шилднуть его вместе с присваиванием переменной.
#340 #550925
>>550891

> Exception ignored in:


> Task result ignored


Так а что в этом такого-то? Это ворнинги же.
#341 #550931
>>550925
Процессы нужно завершать, иначе орфанами засирается всё. Если ты запустил что-то в отдельном таске, будь бобр вызвать terminate на cancel. А после terminate ещё и подождать надо, то есть снова запустить run_until_complete, только с ожиданием по всем незавершённым таскам (кстати даже те которым ты вызвал cancel в качестве финализации - тоже ещё считаются незавершенными, так как таск может перехватывать cancel и должен отработать это дело). Всё не так просто.
#342 #550963
>>550931
Это видимо только для субпроцессов, я с ними ещё дела не имел.
#343 #551061
Питонач, помоги, пожалуйста, ретарду
Как пользоваться Kivy? Скачал, установил
Что запускать?
#344 #551099
>>551061
Документацию читай.
#345 #551136
Есть где-то рекомендации по тому как надо пилить GUI на PyQt5.5 ну или около того, а то от обилия ебаных говно туториалов с разнящимися идеями уже хуй поймешь как надо - один хуярит прям в py файле после конверта из .ui, второй говорит так делают уебаны, надо делать отдельный файл и подключать туда наследуя класы, а дальше только подключать сигналы и писать функции, третий говорит всё хуйня надо делать 3 разных файла в одном GUI, во втором функции, в третьем связка, четвертый кроет всех хуями говорит что UI desinger для хуесосов - надо писать с нуля в одном файле всё вместе.

Алсо никогда в своей жизни еще не писал тесты для своего говнокода, нужна инфа по этому процессу желательно для тупых.
#346 #551138
>>551136
Генерировать код и .ui файла хуевая идея. Когда поменяешь что-то в ui файле - заебешься мерджить.
А так я хуй знает я на pygtk писал

> UI desinger для хуесосов - надо писать с нуля


Смотря что, некоторые вещи проще из кода генерить действительно. Некоторые нет. Головой думай.
#347 #551141
>>551138
Ну так нехуй коммитить сгенерированный код.
#348 #551175
>>551136
Импортишь сразу .ui файл без конвертации. Раскидываешь сигналы. Два файла или три — по вкусу.
>>551141
Это не про то. Речь о конвертации ui → py. Ты в получившийся файл что-то добавил руками, а потом надо gui изменить. Соответственно надо как-то мерджить сгенерированный py и тот, что ты руками потрогал. Но это хуёвая идея и так делать не нужно конечно же.
#349 #551182
>>551175

>Ты в получившийся файл что-то добавил руками


Вот этого надо избегать. Use манкипатчинг и наследование, Luke.
#350 #551221
>>551182
Это был ответ >>551141 и я не >>551136
#351 #551225
>>551182
Нет необходимости этот год генерить вообще, можно просто подключать ui файл и всякие сигналы цеплять.
#352 #551227
>>550811
Новичку непросто придумать задачу, которая подошла бы для закрепления именно только что изученной темы.

>>550856
Наверное, займусь другим учебником, когда закончу этот.
#353 #551233
>>551227
Давай я тебе придумаю задачек. По какой теме и что закреплять?
#354 #551266
>>551233
Файлы и исключения.
#355 #551295
>>551266
Задача: прочитать 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
#356 #551297
>>551266
Давай к нам в вебм-проект. Задачи тебе найдём. Можешь логи парсить, например.
#357 #551299
>>551295
Следующая задача записать выхлоп предыдущей в бинарном формате и сделать функцию для чтения.

Формат:

Заголовок (в начале файла):
b'TOPKEK' - метка типа файла
int32 - количество записей

Записи фиксированный ширины:
int32 - параметр 1 (умноженное на 1000 и округлённое число из третьей колонки)
int32 - параметр 2 (умноженное на 1000 и округлённое число из четвёртой колонки)
int32 - смещение относительно начала файла к строке с именем

Записи произвольной длины:
плотно друг за другом строки заканчивающиеся символом перевода строки '\n'

Функция чтения должна быть генератором, то есть читать из файла по мере необходимости выдавая:
yield id, name, a, b

Если пользователь во время чтения файла нажал Ctrl-C или Ctrl-Break вывести на экран последний прочитанный id.
222 Кб, 1279x1023
#358 #551308
>>551295>>551299
Ох ты ж, хотя решается наверное в пару строчек.
мимо-ньюфаг
#359 #551392
Питонач, если я сделаю блог на Джанге меня захотят взять на работу?
#360 #551400
>>551392
И все девочки в классе дадут. Да и я бы дал, чего уж тут.
#361 #551407
>>551400
Переформулирую. Что нужно знать и сделать джуну, чтоб взяли?
#362 #551443
>>551407
Пройти собеседование.
#363 #551501
Ребят, вот мой пост: http://stackoverflow.com/questions/32874488/building-cascade-structure
Никак не пойму, что надо сделать. Где только не задавал вопрос, всегда ответ в одной строчке. Начинаю тыкаться, пробовать что-то сделать - лезут самые разные ошибки.
Можете показать мне готовое решение? Не то что бы я не готов разбираться, но мне кажется тут что-то очень простое, и даже в чем-то другом ошибка. Сижу на этом три недели.
#364 #551519
>>551501
Тебе же блять ответили на стаке. Хуле тебе еще надо?
#365 #551520
LQ разложение матрицы поцаны кто знает как сделать. В Numpy и Sumpy только QR.
#366 #551521
>>551520
Аналогично QR. Только если в QR ты вращаешь/отражаешь вектор-столбцы, то в LQ надо то же самое делать с вектор-строками.

Но если лень писать самому:
A^T = QR
(A^T)^T = (QR)^T = (R^T) x (Q^T) = LQ'
Т.е. посчитай QR разложение транспонированной матрицы, в потом транспонируй полученные R и Q.
#367 #551532
>>551519
Нихуя не работает.
#368 #551571
Смотрел видосики с яндекс разработчиками, везде пишут, что они программируют по 20 с чем-то лет. Учитывая что им около 30, сразу возникает некая демотивация, когда вспоминаю, что мне 22 и я только начинаю учиться. Утешь меня програмач.
#369 #551574
>>551571
Бедненький!
#370 #551575
>>551571
Ну я в 5 лет тоже на бейсике калькуляторы ебашил по книжке, так что стаж 19 лет типа.
#371 #551578
>>551571
Зачем тебе это писькомерство. Важно не то когда начал, а как продолжил.
23 Кб, 600x413
#372 #551579
>>551571
Да-да, все они там ещё сами игры писали для спеки, паскаль с делфи по книжкам Фаронова учили сидя на горшках, и если у тебя этого всего не было то не стоит браться за программирование.
#373 #551580
#374 #551604
>>551532
Ну тогда пиши конкретней задачу, хули тебе надо.

>>551521
Благодарствую.
#375 #551652
>>551571
Хуй забей, этот >>551578 анон правильно написал.

мимо программирую с 15
41 Кб, 464x361
#376 #551696
>>544442 (OP)
Сделать приложение реализующее базовую http аутентификацию (https://en.wikipedia.org/wiki/Basic_access_authentication)

Должна быть возможность применить аутентификцию для всего сайта через middleware и для некоторых представлений с помощью декоратора.
Доступы должны храниться в настройках проекта(settings).

Ну и чего от меня хотят?
#378 #551994
>>551295
Парсинг текста - это сложноватая для меня задача. Тут основной гемор работа со строками. И окуда достал такой длинный файл, хитрец?

Как я понял, сначала все запятые надо заменить на точки, а | заменить запятыми? И вычистить все ";REF#" и "</span". Больше нет никакого мусора? А то глазами проверять все 4328 строк желания нет.
#379 #552003
>>551994
Попробовал решить эту задачу. Споткнулся на точках в начале строк. Весь остальной мусор программа вычищат и нужные замены делает.
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?!
#380 #552004
>>552003

> Весь остальной мусор программа вычищат и нужные замены делает.


Вернее делала всё это до того как я начал бороться с точками в начале строк.
#381 #552007
Ура! Разобрался. Осенило когда уже выключил компьютер. Пришлось включить снова.
http://pastebin.com/h3k3arnF

Но... Хотелось бы узнать почему этот >>552003 говнокод не работал.
#382 #552047
>>552003

>Как вообще [0] может быть out of rang?!


Когда список пустой?
#383 #552130
>>552047
Оне не путой.
Проверял в интерактивной оболочке после прогона программы. И если бы он бы пустой, то интерпретатор не стал бы пытаться выполнить блок
[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" в каждую строку, ошибка выдаётся.
#384 #552169
>>552160
Немодифицируемы? Я их и не модифицирую.
Выражения line += "/n" и line = line[1:] не модифицируют строки, а присваивают переменной line новые строковые значения.
#385 #552170
>>552169

>а присваивают переменной line новые строковые значения


А через неё новые строковые значения заменяют строки в списке.
58 Кб, 338x609
#386 #552178
>>552172

>В списке всё равно остаются исходные.


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

>Во-вторых, у тебя на конце файла \n.


А вот это точно правда. Сейчас верну проверку на пустые строки.
#387 #552182
>>552178

>А вот это точно правда. Сейчас верну проверку на пустые строки.


Хотя один хуй. После
[code lang="text"]
for line in csv_lines:
line += "/n"
[/code]
Пустых строк в списке быть не может.
#388 #552187
>>552007
>>552003
Нет, ну это никуда не годится. Во-первых есть модуль csv, там можно задать любой delimiter, это вот сейчас по чистой случайности в полях нет символа | а ведь он может там появиться.

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

В-третьих используй with.
#389 #552195
>>552187

>Нет, ну это никуда не годится. Во-первых есть модуль csv, там можно задать любой delimiter,


Его ещё изучать надо. Рановато мне работать с узкоспециализированные модулями. Разделитель можно прописать в переменной или в константе.

>это вот сейчас по чистой случайности в полях нет символа | а ведь он может там появиться.


Появиться может любой мусор. Но я действовал по обстоятельствам. Код без цикла фор выдал нужный результат.

>Во-вторых ты сам просматриваешь выхлопной файл что ли чтобы убедиться в отсутствии косяков?


Нет. Открываю в LibreOffice Calc.

>В-третьих используй with.


Исключения не пригодились пока.
#390 #552197
>>552172

>В списке всё равно остаются исходные.


Наверное, и в этом ты прав. Простым перебором элементов списка напрямую через управляющую переменной задачу решить не получилось.
Реализовал цикл по-другому: http://pastebin.com/JNUjEDBk
#391 #552198
>>552195
Лол.

https://docs.python.org/3.4/library/csv.html#module-contents

Тебе нужна только первая функция csv.reader. Там прямо пример в 5 строк есть. Что там изучать?

>я действовал по обстоятельствам


>Открываю в LibreOffice Calc


Надо бы специально тебе сделать файл в несколько миллионов строк.

>with


>Исключения не пригодились пока


Это не для исключений, а для корректного закрытия файла. f.close() вызовется сам в любом случае, даже в случае исключения, а не как у тебя.
#392 #552200
>>552198
f.close будет вызываться когда сборщик мусора соберет f, даже если with не используется.
#393 #552206
>>552200
Есть удобная и аккуратная конструкция with. Нет, не хочу with, хоту жрать говно и догадываться потом, а с хуя ли у меня программы на ровном месте в дедлок уходят и постоянно приходится системные лимиты на количество открытых файлов увеличивать.
#394 #552215
>>552198

>Тебе нужна только первая функция csv.reader. Там прямо пример в 5 строк есть. Что там изучать?


Она только читает csv-файлы, но не удаляет мусор.

>Надо бы специально тебе сделать файл в несколько миллионов строк.


Ещё и для проверки конечного результата код писать? А как подом удостовериться в надёжности этой проверки?
#395 #552219
>>552215
Ну наверное мне следовало бы уточнить что как csv файл 100% валиден.

>А как подом удостовериться в надёжности этой проверки?


Исключения бросать если что не так.
#396 #552220
Ну то есть ты ожидаешь например имя только из английских символов, с большой буквы. Напиши assert или if raise если оно не соответствует. Или в случае id, тупо int применяешь, он тебе сам выбросит если что не так.
#397 #552263
>>552219

>Ну наверное мне следовало бы уточнить что как csv файл 100% валиден.


Замена разделителей да, была лишней.
А вообще я никогда не ковырялся в CSV-файлах. Я об этом формате узнал из Википедии после того как такой файл попался мне на глаза.

>>552220

>assert или if raise


Ох, придётся мне вкуривать ещё один учебник. А потом упарываться официальной документацией.
#398 #552264
>>552197

>csv = csv.replace("#", ".")


Вот сука. Точка между кавыками подленько так затаилась.
68 Кб, 1200x801
#399 #552284
Анончики, а как из питона вызывать стороннее консольное приложение с аргументами, но чтобы сама консоль не показывалась?
#400 #552286
>>552197

> Простым перебором элементов списка напрямую через управляющую переменной задачу решить не получилось.


Дошло наконец почем так: в резульате операции присвоения внутри цикла управляющая переменная перестала ссылаться на элемент списка и вместо этого ссылалась на значение в другой области памяти
7 Кб, 498x137
#401 #552288
>>552130

>Оне не путой.


>Проверял в интерактивной оболочке после прогона программы. И если бы он бы пустой, то интерпретатор не стал бы пытаться выполнить блок


>[code lang="text"]


>if line[0] == ".":


>line = line[1:]


>[/code]


>и соответсенно не выдал бы ошибки.


Почему не выдал бы? Прямо вот на проверке условия и вылетел бы. Пустой список и пустая сторка, в данном случае, одинаково ведут себя.
#402 #552295
>>552284
this.Impossible()
#403 #552296
>>552295
Эх, жаль. Думал, вроде бы вполне простая задача.
#404 #552300
>>552197
Вместо if'а в цикле, кстати, можешь просто csv_lines.lstrip(".") использовать же, вставив это в строку с добавлением \n.
Да и вообще, навреное, можно сделать одной строкой:
csv = "\n".join(line.lstrip(".") for line in csv.split("\n"))
#405 #552306
Двач, поясни за сборку на киви и ffmpeg - в доках говорится, что вроде там идет встроенный ffmpeg, не нужно мучиться с компилированием и сборкой, но как мне тогда использовать его и откуда импортить? Примеров в документации не нашел.
110 Кб, 1271x946
#406 #552309
Почему оно недовольно мной, анончики?
#407 #552310
>>552309
Убери кавычки, где цена, например.
#408 #552312
>>552310
А ларчик просто открывался. Не знаю, зачем я вбил цену стрингами, на самом-то деле.
#409 #552313
def my_power(a, b):
res = 1

for _ in range(b):
res *= a

return res

print(my_power(2, 9))

Как вставить проверку ввода данных? Чтобы а и б не были равны 0, дробному или отрицательному числу или тексту?
#410 #552318
>>552313
Исключения или if'ы.
#411 #552372
Аноны, подскажите как сделать так, чтобы в запросе к api vk менялся только один параметр (item_id, например, перебирался по очереди- каждый следующий был равен предыдущий +1)?
И как сделать, чтобы результат, который возвращает api записывался в файл?

в python пока могу плохо, да, но надеюсь, что "пока"
#412 #552376
>>552372
Пока.
#413 #552380
>>552372
Друг, у тебя со всем плохо, поучи/посмотри элементарные алгоритмы, как что делается.
#414 #552388
Допустим, есть такое:
st = ((d, 3), (a, 3), (c, 1))
Как вернуть букву, рядом с которым самое большое число? Отсортировать и вывести st[0][0].
Как реализовать вывод букв в алфавитном порядке, если цифры рядом с ними одинаковые?
надеюсь понятно описал
9 Кб, 480x360
#415 #552402
>>552388

> букву, рядом с которым

#416 #552405
>>552402
Очепятка же.

>>552388
Набыдлокодил вот так http://pastebin.com/bqpSrdXk

Ужасный код, надеюсь кто-то покажет как можно было сделать это красиво.
#417 #552407
>>552405
http://ideone.com/ZVWi8p
Но это не самое удачное решение. Вообще лучше пересмотреть свою структуру данных. Раз нужные такие™ запросы, то это не лучший вид хранения.
#418 #552411
>>552407
О боже это 10 из 10. Спасибо большое.
#419 #552418
>>552411
Раз нужны
слоу фикс
#420 #552419
>>552418
>>552407
совсем окосел
43 Кб, 634x257
#421 #552562
Поясните почему не работает:
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">') :
#422 #552566
>>552562
number_lst = len(lst) - 1
Тоже не работает.
Причем, вывод дает строку if lst[number_lst + 1], которой даже нет.
#423 #552574
>>552566
Так у тебя на 87-ой всё равно есть lst[number_lst + 1], которое вообще непонятно чего значить должно, при твоих значениях number_lst. Ты чего сделать-то хочешь? К последнему элементу лучше lst[-1] обращайся, гораздо очевиднее же.
#424 #552638
>>552574
Так, оказалось, что несколько часов тестировал не тот скрипт, которые писал.
Но, все равно не работает.
Можно ли совмещать 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">.
#425 #552664
>>552638
Нет. Из буфера только один раз можно прочитать. Так что сначала all_in_one_string = fhand.read() а дальше уже чего хочешь с этим делай.
#426 #552682
>>552664
Благодарю. Так и сделал.
#427 #552756
Как сделать, чтобы сохранялся в файл только определенный результат работы скрипта?
api vk выводит разный результат, но нужно чтобы сохранялся результат только такой: {'copied': 0, 'liked': 1}
Подскажите, как такое реализовать?
#428 #552759
>>552756
Изменить скрипт. не блогодори
#429 #552760
>>552756
curl '...' | grep copied.*liked >> file.txt
#430 #552857
>>544526
Не знаю, на мертвых не пишем.
#431 #552861
ПОСОНЫ, ПОТУШИТЕ МНЕ ПЕРДАК

Есть либа https://xlsxwriter.readthedocs.org/
Есть такое дерево путей, видно что xlsxwriter лежит в yoba директории:

/
baget.py
yoba/
---- __init__.py
---- xlsxwriter/

Как импортировать xlsxwriter в baget.py?
Пишу from yoba import xlsxwriter - посылает на хуй.
Что я делаю не так?
#432 #552863
>>546530
Ну парсер это хорошо и удобно. Проблема в том что парсер будет некорректно обрабатывать / не обрабатывать вообще невалидный html, а регуляркой можешь что угодно парсить.
#433 #552881
>>552295
Ага, sosnolley, ньюфаги, таки нашел решение!

from subprocess import call
call(command, shell=False)

Невозможно у них, ага.
#434 #552888
>>552881

Если тебе надо менеджить ещё и подпроцессы, то вот так лучше делать. Можно убрать ещё и аутпут, если будешь из консольки запускать.

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
#435 #552954
Суп, почтенные двачеры.
Есть пара вопросов по Джанго:

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 тоже будет абстрактным?
#436 #552967
>>552861
Добавить в xlsxwriter --init--.py
431 Кб, 1280x850
karasique #437 #552969
>>552967
Пикча приклейся!
sage #438 #552999
>>552967
Но там уже есть такой файл. Не все так просто, иначе я бы не спрашивал.
#439 #553003
>>552999

СОЛЮШЕН

# 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' *

И ТЕПЕРЬ РАБОТАЕТ! АЖ ТРИСЁТ! ЕБУЧИЙ ПИТОН
#440 #553004
>>553003
Катись нахуй, дибил-неосилятор.
#441 #553005
>>553004
Так ты решения не предложил даже, выходит, что неосилятор - это ты.
Охуенно - скачиваешь либу и меняешь исходники, чтобы хотя бы заработало.
#442 #553137
Питоны, читаю "Укус пи[hide]c[/hide]тона", добрался до первой задачки. Уже глаза себе все выебал, не могу понять, чего не так с кодом. Кто нибудь ее решал, из неофитов?

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'
#443 #553212
>>553005
[~]$ 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


>>>


А теперь катись к хуям, неосилятор.
#444 #553218
посоны, мне нужно перехватывать все исключения, выдаваемые сбоящим интернетом. except BaseException: не сработал, исключения по-прежнему ложили программу. except Exception: решит эту проблему?
#445 #553219
>>553137
не закрыта скобка в последнем print.
Ваш Кэп.
#446 #553229
>>553218
Выбрось двойку. В тройке можно писать или

except Exception as e:

или

except:

Exception базовый класс для всего. Но намного лучше перечислять конкретные экзепшены по мере появления или заглянуть таки наконец в доку.
#447 #553236
>>553229
у меня тройка. эксепшенов разных появляется море, все прописывать заебешься. пропишу except:, спасибо.
#448 #553324
>>553219
>>553219
Не, в коде ошибок нету, это я криво скопировал. Там с функцией zip беда, я gnuwin32 поставил на десяточку, она справедливо не работает.
#449 #553435
Аноны, подскажите ньюфагу, что не так, блять, почему результат не записывается в файл?

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()
#450 #553442
>>553435

>f.write( '\n'.join(str() +'\n'))


А что ты туда пишешь, аутист? Только один \n
#451 #553446
>>553442
Бля, а как сделать то, чтобы то, что возвращает api записывалось в файл?

аутист, не спорю
#452 #553449
>>553446
А я ебу что и как твой раковый вк-апи возвращает?

Попробуй print(vkapi.likes.getList(owner_id=-xxx, item_id=yyy, friends_only=1, type='post')) для начала.
Если есть что-то вразумительное - присваивай переменной и пиши ее в файл. Или сразу вместо принта f.write()
Иначе кури документацию.
#453 #553463
>>553449
Спасибо, анон, все заебись!
#454 #553690
Я совсем ньюфаг объясните, что такое self.
Ни в одном из учебников нет доходчивого объяснения.
#455 #553692
>>553690
Ссылка объекта на самого себя.
В ебанутом пистоне обязательный первый аргумент у методов объекта.
#456 #553694
>>553692

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


Прохладно, братишка.
https://docs.python.org/3/library/functions.html#staticmethod
#457 #553702
>>553694
Да ладно, я знаю то в питоне есть аналоги статических методов, прост наверняка нюфагу это пока не важно и сути он не поймет.
#458 #553705
>>553435
Пройди какой-нибдуь курс на той же кодокадемии, что ли, потому что при виде строки

>f.write( '\n'.join(str() +'\n'))


Складвается ощущение, что ты абсолютно ничего не понимаешь. Т.е. на что ты вообще надеялся, что в этой строке произойдёт?
#459 #553745
>>553705

>>Т.е. на что ты вообще надеялся, что в этой строке произойдёт?


>Незнаю, мне в официальной группе в вк сказали это мне дожно помочь.

#460 #553777
Можно ли dict или OrderedDict сортировать в соответствии с шаблоном типа другого словаря или списка?
#461 #553821
Почаны, что-то я запутался и лень вспоминать прошлые треды, какой гуи лучше использовать, чтобы кроссплатформа и легко писать?
#462 #553858
>>553777
Наговнокодил с помощью move_to_end и try/except.
#463 #553869
Помогите в чем проблема? Нужно сделать так, чтобы к прибавлялось 20 к тому, что вводилось.
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'
#464 #553872
#465 #553873
>>553869
Складываешь число и строку, так нельзя.
#466 #553876
>>553873
ОЙ БЛЯТЬ! Я ЖЭ ТАК И ДУМал.
Вот я тупица.
#467 #553877
>>553873
Ах да спасибо в любом случае.
#468 #553878
>>553876
Почему я такой тупой?
я же даже перевел
#469 #553901
>>553878
%потому что тупой%
Потому что не понял что перевел.
#470 #553979
>>553858
dict не имеет никакого порядка, остаётся только OrderedDict. Если с памятью проблем нет, не будет ли чище, вместо изъёбств с ловлей эксепшнов, сделать как-то так:
a = <иходный словарь>
b = OrderedDict()
for key in a.keys():
b[key] = a[key]

Ведь OrderedDict запоминает ключи в порядке ввода. Ну и a.keys() может быть заменено на что угодно, включая какой-то отсортированнй список. Разве что лишних ключей там быть не должно. Конечно, тут создаётся новый словарь.
#471 #553987
>>553821
Ну же, анончики родненькие, какой гуй простой и кроссплатформенный?
#472 #553991
>>553987
PyQt глянь.
#473 #554055
Пацаны, я юзаю питон 3 и хочу отсортировать точки на плоскости по полярной координате, используя векторное произведение. Точки сравниваются так:
(a < b) <=> (a x b > 0)
Но в питоне 3 нельзя написать cmp = lambda a, b : a x b, потому что параметр cmp выпилен и оставлен только key. Че делать?
#474 #554114
>>553991

>простой


>Qt


/0
Он настолько раздутый что жаба позавидует.
#475 #554125
>>554114
На нём можно и просто всё делать, без model-view. В любом случае, лучше ничего нет, ну, может гтк, но я им не пользовался. Всё остальное либо мертво, либо говно-ткинтер, который в стандартной либе лишь из-за совместимости.
#476 #554128
>>554125
Двачую.

Ну если изыски никакие не нужны - сделай на Tk.
#477 #554129
>>553777
Сортировать надо индексы, можно использовать list.index как ключ сортировки.
#478 #554133
>>554125
gtk через pygobject очень даже норм. В линуксах дохрена на нем написано.
#479 #554142
Когда наступает тот уровень знания питона, когда можно с такого(см ниже) перейти на что либо серьезное калькуляторы, текстовые редакторы? Что нужно еще выучить чтобы перейти на следующий уровень? К слову я просто решил кое что опробовать, так что извините, если вам что либо не нравится.
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)
#479 #554142
Когда наступает тот уровень знания питона, когда можно с такого(см ниже) перейти на что либо серьезное калькуляторы, текстовые редакторы? Что нужно еще выучить чтобы перейти на следующий уровень? К слову я просто решил кое что опробовать, так что извините, если вам что либо не нравится.
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)
#480 #554144
>>554142
Нахуй этот кривущий транслит? create chislo? Really? Питон3 с юникодом нормально работает, пиши либо на рюске, либо на английске. И не выебывайся.

Дальше лень читать без форматирования. Запили на пасту чтоб анон не мучился.
#481 #554145
>>554142
А что ты хочешь услышать? Голова-то твоя, если чувствуешь, что можешь или примерно понимаешь, что от тебя требуется - начинай делать
#482 #554149
>>554145
Ну хотелось бы услышать о том, как вы начинали, если вы в этом треде значит в питоне заинтересованны.
#484 #554262
>>554149
Берёшь и делаешь, ёпте, чего ждать-то? Не знаешь, как что-то сделать — в гугл. Или ты думаешь, что задрочив 1000 элементарных упражнений тебя вдруг магическим образом осенит и ты без помощи интернета и даже доков напишешь еве онлайн, вслепую перескочив на стаклесс?
48 Кб, 604x453
#485 #554345
>>554055
бамп вопросу
#486 #554347
Чуваки, а вы помимо расстановки пробелов в коде ещё и номера строк ставите?
Просто хочу сказать что, те кто используют питон мудаки.
Благодарю за внимание.
С уважением, ваш Аноним.
#487 #554350
>>554347
Не только номера строк, но ещё и номера символов на строке (столбцов), так интерпретатору легче показывать, где ошибка.
#488 #554353
>>554350
Крейзи.
С уважением, ваш Аноним.
----------
Аноним писал:
Не только номера строк, но ещё и номера символов на строке (столбцов), так интерпретатору легче показывать, где ошибка.
#489 #554356
>>554345
functools.cmp_to_key(your_cmp)
#490 #554394
>>550232
Эт нормально. Просто у тебя уже старческое слабоумие начинается. Обычно простые вещи проще осилить, чем сложные, но когда мозги, как сухое говно, приходится лабать на том, к чему привык.
#491 #554522
что-то вялый тред
#492 #554546
>>554522
ПИТОН НЕ КОБРА
#493 #554550
>>554522, нахуй тебе тред, заваливайся к нам >>549434 У нас тут джанга, бутстрап, немного жс, парсинг, лёгкая обработка видео, очереди на rabbitmq. Есть задачи для нубов (лойсы делать например).
40 Кб, 642x217
#494 #554566
Снова я со своим тупым вопросом.
Что не так?
Сначала я делаю так:
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, а потом с начала списка (вернее пытаюсь, ведь эта часть не работает). Но какого хера мне пишет, что номер элемента вне списка в начале второй части?
#495 #554578
>>554566
Ну а запринтить number_lst перед этой строкой и увидеть его значение религия не позволяе? Вангую, перед строкой if '<div class="noteFotter">' in lst[number_lst + 1], переменная number_lst равна номеру последнего элемента списка, т.е. number_lst -= 1 не выполняется ни разу (я вижу там continue, а остальную часть кода и сам текст ты скрыл, что очень способствует помощи).
#496 #554585
>>554578

>у а запринтить 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
Т.е., возврат в начало первого цикла.
#497 #554613
>>554550
Может завалюсь как-нибудь. Сейчас фласк изучаю.
#498 #554647
Возможно ли написать на Питоне скрипт, который бы решал системы уравнений для матриц вплоть до 10х10 методом Гаусса? Просьба не скидывать NumPy.
109 Кб, 570x401
#499 #554656
>>554647
Ты хоть бы википедию для приличия открыл.

>Возможно ли


Сам-то как думаешь? Если можно на numpy, то почему нельзя на питоне?
#500 #554769
Какие из GUI библиотек в обиходе в продакшене? Так то умею в GTK, но что-то сдается нигде он не применяется.
#501 #554770
>>554769
GTK вообще или python+gtk? Первого навалом же.
#502 #554772
Помогите.
#503 #554774
>>554769

>GTK


>но что-то сдается нигде он не применяется.


Списочек пакетов из дебиана, юзающих питоновские биндинги к гтк.
https://bpaste.net/show/bc337ac32990
#504 #554787
Никак не могу понять нахуя нужен self кроме как просто первый параметр метода. В чужом коде вижу его часто не только в качестве первого параметра в описании метода. Зачем он нужен?
#505 #554788
>>554787
Чтобы обращаться к своему экземпляру класса.
#506 #554789
>>554788
Да блять мне трудно понять, что это значит, хотя вроде определение этих слов знаю. Можно простыми словами?
#508 #554791
>>554790
Алсо, self не кейворд и вместо него можно писать что угодно. Но принято self.
#509 #554793
>>554791
>>554790
Ну это я конечно знаю. Тяжело понять. Наверно не из-за того, что мало сплю.
#510 #554797
>>554790
>>554791
Ни с чем сложнее этого пока что не сталкивался. Хотя я уже несколько дней пытаюсь сообразить.
#511 #554798
>>554793

>Чтобы обращаться к своему экземпляру класса.


Помедетируй над этим. t = Test(); t.x - так ты обращаешься к содержимому класса снаружи. self.x - изнутри класса. Ничего нового и сложного тут нет. Ты вообще с ООП в других языках работал?
#512 #554802
>>554798
Да это я знаю и так. Вопрос в том зачем он нужен, когда можно обойтись без него вставляя его только в описании метода. И поэтому мне также непонятно почему он вообще где либо есть кроме как там где я сказал.
Да в PHP было дело. Но в PHP мне все казалось предельно ясным, хотя я его подзабыл, но там вроде $this -> вместо self.
#513 #554803
>>554802
Можешь и тут this вместо self писать. Суть и там и тут одна.
#514 #554806
>>554803
Там все по другому, там, если не ошибаюсь это принудительно делается, и и вообще там насколько я помню над этим можно даже не задумыватся.
Меня другое интересует, почему его при всем при этом используют не только так как обязательно?
#515 #554826
>>554789
Позадрачивай определения. Что тако класс, а что его экземпляр, и какого хуя у них есть методы. Ну ты пони.
#516 #554827
>>554806
Вот у меня есть класс. Вот пишу я в нём есть метод, в котором хочу использовать один из атрибутов (экземпляра) этого класса. Как я без self до него доберусь-то? Никак. Затем self и нужен.
#517 #554828
>>554585
Принаут, в котором будет

>print(number_lst) # -1 or 0


>print(len(lst)) # > 1


>if ... in lst[number_lst+1] # errore


В студию, пожалуйста. Только принты внутрь лупа ставь, ты вадеь наверняка там инкрементируешь number_lst, да?
#518 #554833
У самого не получилось написать, а в Интернетах скрипты вызывают ZeroDivisionError. Да ещё почитал, что на Питоне делать такой скрипт не надо, легче на С намутить. Метод решения я знаю, а по поводу Вики – хуй знает, как я проебал этот алгоритм, так что спасибо.
#519 #554908
Котаны, затестил сейчас PyQt - просто сказка, есть xml-представление, вменяемый дизайнер, где можно вручную прописывать все свойства и лэйауты, все просто летает. Вся эта тема с сигналами и слотами - вроде не сложно, можно вполне быстро подключить всю логику.
Единственное, пока не знаю, насчет сборки, говорят какие-то сложности могут возникнуть, но в целом пока очень годнота.
#520 #554958
>>554908
cx_freeze. Под вендой проблем со сборкой нет. Под линуксом собирал один раз, была проблема с поиском и копированием *.so файлов в автоматическом режиме, в итоге скопировал их руками. Но под линуксами уж проще пакеты поставить или сам pyqt собрать, нежели делать бинаруную сборку.
#521 #555019
>>554958

>нежели делать бинаруную сборку.


а для чего ее вообще делать?
#522 #555032
>>554828
Я убрал в while и все заработало. ХЗ почему так. Хреново конечно, но ладно.
Теперь вопрос в том как обойти cloudflare, т.к. эта хрень мне запрещает заходить на сайт (через браузер захожу нормально).
#523 #555076
>>554656, браузер глюкнул, лови >>554833
#524 #555085
>>555032
Хеадеры может поставить нужно?
#525 #555102
Пагни, кто в чем питонит? Я вот сейчас pycharm поставил, поглядел, почему то он грустный.
#526 #555107
>>555085
Загуглил, что надо под браузер закосить.
Вставил
urllib.URLopener.version = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; T312461)'
Вроде пока работает.
Потом может еще за прокси спрошу. Что-то у меня не получается с ними.
#527 #555138
>>555102
pycharm всегда грустный, если его не настриваться и запускать на слабом пк.

Так-то похуй в чём писать. Я например Geany юзаю. Простейший редактор без наворотов.
#528 #555197
Сосоны, какую либу можно заюзать для разработки простой 2D игры на 3 питоне?
#529 #555203
>>555197
Если ты у мамки геймдев то бери юнити и не выебывайся.
Если задача стоит сделать игру именно на питоне чтобы лабу сдать или курсовик , то pygame, например. Хотя можно и в Tkintere ебашить.
#530 #555218
>>555203
Разве pygame дружит с третим?
#531 #555231
Почему в этой строке
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 не работает?
#532 #555240
>>555107
Прокси вряд и потребуется, cloudfire и так пропустит.
#533 #555243
>>555231
Почитай как работает оператор или в питоне. Заодно как работает внутри эта функция глянь (прямо код). Совсем не так, как ты думаешь.
#534 #555244
>>555218
Разве можно быть настолько тупым и ленивым, чтобы не загуглить этот вопрос?
Ну или хотя бы зайти на сайт pygame и найти там ебаный вики с факом?
http://www.pygame.org/wiki/FrequentlyAskedQuestions#Does%20Pygame%20work%20with%20Python%203?

Это ведь пиздец как трудно.
#535 #555249
Как с помощью питона получить значение из ячейки экселя содержащего значение выпадающего списка. Например, есть поле "Материалы", там есть "МДФ", "Массив", "ДСП". Рядом есть еще одно поле "Толщина" и соотвествующие значение "6", "10", "12", "16". Есть словарь - materials = {'МДФ' : {'6' : '230', '10' : '260'}} и так далее. Нужно соответсвенно получить цену, если заданно МДФ 10 = 260.

Делаю через xlwings. В принципе всё ахуенно.

Значения вроде вытаскиваются, однако код всё равно не работает. Выдает KeyError 16.0
http://ideone.com/DhnqHU

Однако, если задать material и depth "Вручную"
http://ideone.com/LCPTb3

Всё работает. Хуй знает че за хуйня.
#536 #555251
>>555244
Конечно трудно, я ж не изначально спрашивавший, и мне пайгейм казался уже много лет чуть ли не заброшенным проектом, и копаться на их убогом сайте, где даже кнопки давнлоад или того же FAQ нет, желания не появлялось (честно, я туда перед постом зашёл и сразу вышел).
#537 #555252
>>555249
У тебя ключи в стрингах, а ты ему флоат передаёшь.
#538 #555255
>>555251
Вбить в гугл ебаные заветные pygame and python3 или python3 games сука тоже видимо тяжело. Ибо блять первая ссылка сразу блядский туториал. http://pythonprogramming.net/pygame-python-3-part-1-intro/
#539 #555257
>>555252
И что ты мне предлагаешь?

material = str(Range('Sheet 1', 'E2').value)

Один хуй тоже самое будет.
#540 #555260
>>555019
Очевидно же, чтобы пользователю не пришлось ставить питоны и библиотеки.
#541 #555301
>>555257
str(int(...)), например. Откуда я знаю, в каком там формате у тебя записаны данные в экселе. Включе у тебя стоит "16", значит именно строку "16" тебе и нужно туда передаь в качестве ключа.
14 Кб, 174x531
#542 #555475
Есть сайт на джанго и файл с пачкой юзеров. Как лучше данные из csv в базу данных загнать? У меня что-то возникают всякие безумные идеи по типу "загнать строчку из csv в форму, провалидировать ее и сохранить" или похожее извращение с моделью. Или просто взять данные и напрямую заебенить в базу? Так ведь пароль нужно будет сгенерировать, и послать юзеру на почту + так как данные заносить нужно в 2 связанные таблицы способ с моделью кажется проще. Чего посоветуете?
#543 #555509
>>555475
Слишком расплывчато описано. И в конце концов нихуя не понятно что тебе нужно сделать.

Если тебе нужно просто заебенить инфу в БД, то просто напиши Custom Django Command, которая будет хуярить в БД данные.

Можешь сделать еще таблицу с этими данными и привязать к юзеру по ключу и по идее нихуя тебе не надо отправлять ему.

Больше конкретики: Что за инфа в CSV, зачем эта инфа нужна тебе в проекте, что ты с ней будешь делать, как с ней юзер контактирует.
#544 #555515
>>555509
В csv у меня данные пользователей, имя, емейл, телефон, дата рождения и т.д. Эти пользователи не зарегистрированы на сайте. Мне нужно перенести данные из csv дабы юзер мог зайти на сайт указав свой емейл и пароль(который я сгенерирую и отправлю ему по почте). Как-то так
#545 #555525
>>555515
У тебя есть модель юзеров, которые уже зарегистрированы на сайте?
Просто берешь делаешь Custom Django Command и заполняешь БД создавая новые записи там же делаешь SMTP сервер и рассылку.
#546 #555617
есть один сервер на линупсе, там стоит божественный бетон 2.7.
Я страный ньюфаг и умею только в 3.
хочу запускать там свои поделия, но не могу поставить необходимые модули для третьего, всякие пип ставят на второй, дефолтный.
как же быть?
17 Кб, 427x315
#547 #555618
>>555617
python3 -m pip install package_name ?

Ну и вообще по установке модулей - https://docs.python.org/3.5/installing/index.html

Алсо, некоторых конкретных модулей от второго под третий может просто не быть, т.к. они говно мамонта/автор умер/забил и поленился. Но может быть альтернатива в первом результате гугла. Если нет, если портить на третий самому лень и прямо таки НАДО второй - есть 3to2, бэкпортит твой код с третьего на второй.

И хуле ты тут в 04:41 забыл? Иди спи, шакал ебучий. Заставил меня отвечать.
#548 #555641
>>555618
Я непонятно выразился. Коротко: я в вот ебал второй, хочу третий везде (даже Аллах).
На локальной машине все хорошо работает, осталось только модули на сервер накатить.

Сделал поделие которое ползает по всему двачу в поиске "засмеялся проиграл" тредов и качает из них картинки. На сервере сможет делать это целыми днями, пока его не забанят нахуй.
А сейчас у меня 10 вечера 0_o
#549 #555654
Перекат
>>555653 (OP)
Тред утонул или удален.
Это копия, сохраненная 30 октября 2015 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски