Да в общем-то весь тормозящий код приведен в моем первом вопросе. Если вкратце, то вот вся структура скрипта: Code: import ... <куча модулей> # класс, экземпляры которого будут являться потоками class Action(threading.Thread): def __init__(self, ...): ... # создаем функции def login(self, ...): # функция логина, тут все понятно ... def grab(self, ...): ... # тут собрали юзеров в список users # каждый юзер — строка типа 'Вася Пупкин' # дальше блэклист по именам for user in users: [B] with lock: cur.execute('select bl_name from bl_table where bl_name = ?', (user, )) rs = cur.fetchone()[/B] if rs: # юзер есть в блэклисте users.remove(user) return users def invite(self, user, ...): ... # здесь отправили приглашение для юзера # далее идет запись его в блэклист [B] with lock: cur.execute('insert into bl_table (bl_name) values (?)', (user, )) con.commit()[/B] def work(self): # загрузили аккаунты (accs) for acc in accs: # залогинились (функция login()) # собрали юзеров (функция grab() выдает список users) for user in users: # отправили приглашение (функция invite()) # прикрепляем эти функции к экземпляру потока self.login = login self.grab = grab self.invite = invite self.work = work # продолжаем загрузку конструктора суперкласса threading.Thread.__init__(self) def run(self): self.work(self) ### основная программа # открываем соединение с базой [B]con = sqlite3.connect('bl.db', check_same_thread = False) cur = con.cursor() cur.execute('create table if not exists bl_table (bl_name text)')[/B] # запуск потоков threads = [Action() for tn in range(нужное_количество_потоков)] for t in threads: t.start() for t in threads: t.join() Тут трабла в том, что мне записывать в блэклист надо не id (циферки), а ники юзеров (строки) типа «Вася Пупкин».
Code: import random, string from bsddb import db table = db.DB() table.open('table.db', db.DB_HASH, db.DB_CREATE) magic_words = ( 'hui', 'pizda', 'jigurda' ) def fillbase(): alphabet = string.ascii_lowercase + string.ascii_uppercase + string.digits for _ in xrange(1000000): nick = ''.join(random.choice(alphabet) for _ in xrange(10)) table.put(nick, None) for x in magic_words: table.put(x, None) def check(): for x in magic_words: if not table.get(x) is None: print x, 'found' #fillbase() check() Заполнение: Code: % time python test.py python test.py 62,42s user 22,73s system 99% cpu 1:25,72 total Доступ: Code: % time python test.py hui found pizda found jigurda found python test.py 0,04s user 0,01s system 102% cpu 0,047 total
добрые , мне надо отсылать каждый день маил с разным кон-тентом на определенный маил надо чтоб 5 разных msg рандомно висилалис + если не трудно подскажите как туда рандом хеш добавит ( чтобы проходило спам фильтры ) #!/usr/bin/python # -*- coding: utf-8 -*- import smtplib , random msg = 'test' server = smtplib.SMTP('mail.xyz.com',25) server.ehlo() server.login('[email protected]','123456') server.set_debuglevel(1) server.sendmail('[email protected]','[email protected]',msg) server.close() к примеру msg = 'test1' msg = 'test2' msg = 'test3' msg = 'test4' msg = 'test5' к всем мsg надо добавит рандом хеш ( для антиспам )
Всем привет, только начинаю изучать кодинг. Вот попробовал написать мелкую прогу вывода данных из localtime: Такой вопрос, как сделать так что бы else работало только если я ввел значение которое не принадлежит к инструкции "if d =" а то оно сейчас выводится после каждого результата.
начал работать с базами данных на питоне через apsw. При попытке ввода русских букв в БД вываливаются ошибка "UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 52: ordinal not in range(128)" Code: #!/usr/bin/python #coding=UTF-8 import apsw #соединение с бд вырезано text = 'Строка на русском языке' sql = 'INSERT INTO Text (ID,Strings) VALUES ( %s,text)' % lastid cursor.execute(sql) если текст заменить на англ, то все ок. что можно сделать в этом случае? какие модули для работы с БД вы используете? P.S вопрос решил. Достаточно писать нечто вроде Code: text = 'Строка на русском языке'.decode('UTF-8')
awdrg apsw предназначен для sqlite? Чем вам тогда стандартный модуль не угодил? Если хочется погорячее тогда - SQLAlchemy
начал работать с бд через sqlite3, теперь возникает проблема другого плана. Русский текст заливается в базу без проблем, но после того как я его вывожу запросом "SELECT * FROM id" в консоль, появляется на экране текст вида: Code: (1, 'english') (2, u'\u043f\u0440\u0438\u0432\u0435\u0442') (3, u'\u043f\u043e\u043a\u0430') ... в офф документации читал про переменную Connection.row_factory, которая позволяет менять формат выводимых данных, но ее изменение на {str / unicode / sqlite3.OptimizedUnicode} не повлияло результат. исходник: Code: #!/usr/bin/env python #coding=UTF-8 import sqlite3 conn = sqlite3.connect('sqlite.db') c = conn.cursor() sql = "SELECT * FROM id" c.execute(sql) for row in c: print(row) print "Done." upd ошибка была в криво ПРИСПОСОБЛЕННОМ примере с офф сайта. В общем я заменил цикл на Code: for i in c.fetchall(): print i[0],i[1] и все заработало
У меня такой вопрос, я например накодил что нибудь в нотпаде, сохранил файл с расширение .py Теперь когда я запускаю python.exe и хочу импортировать этот файл как модуль - он импортируется, но и одновременно выполняется код этого файла. Можно как нибудь сделать так что бы код не выполнялся, а модуль импортировался?
MyGreenLife не совсем очевидно, что вы хотите. Если вы хотите, чтобы некоторые действия из модуля выполнялись только при прямом вызове, то следует использовать такую конструкцию: Code: # всякие разные действия if __name__ == '__main__': # действия выполняемые только при прямом вызове
Доброе время суток всем. Работаю с urllib2, cookie. И вот наткнулся на грабли решения которому пока не нашёл. сайт отдает не совсем верные куки. Что такое не совсем верные куки, это куки такого вида : "Lang=2; expires=Thu, 08-Dec-11 17:02:17 GMT" Например мыл ру возвращает "Mpopl=1490110327; expires=Thu, 08 Dec 2011 17:21:42 GMT; path=/; domain=.mail.ru" В свете того что кука не совсем корректна, куки жар её не определяет и работать с ней не хочет. Код у меня почти с примера: Code: save_jar = cookielib.CookieJar() Request = urllib2.Request wrk2_opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(save_jar)) wrk2_opener.addheaders = zip(req_hdr.keys(), req_hdr.values()) init_data = None init_req = Request(wrk_url,init_data,{'Referer': 'http://www.ya.ru'}) webdt = wrk2_opener.open(init_req) Есть ли возможность отключить данные проверки ? И как быть в такой ситуации ? Работать с куками вручную ?
ДА Все он верно отдает) В спецификации указано что все кроме value являеться необязательным параметром..
SterhTG Mpopl нормально установилась: Code: import cookielib import urllib2 cookie_jar = cookielib.CookieJar() opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie_jar)) req = urllib2.Request('http://mail.ru') try: conn = opener.open(req) except urllib2.HTTPError, e: conn = e finally: data = conn.read() for cookie in cookie_jar: print cookie Проблема где-то в другом месте, например в словаре req_hdr - есть элемент с ключом Cookie
SterhTG Кукисы совпадают с браузерными (с точностью до значения). Да Lang - не устанавливается, но браузер ее также игнорирует. Code: import cookielib import urllib2 cookie_jar = cookielib.CookieJar() opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie_jar)) req = urllib2.Request('https://issa.volgogsm.ru/cgi-bin/cgi.exe?function=is_login', 'Lang=2&Password=100500&mobnum=1234567890&x=28&y=17') try: conn = opener.open(req) except urllib2.HTTPError, e: conn = e finally: data = conn.read() print conn.headers for cookie in cookie_jar: print cookie
У меня такой вопрос, почему команда "break" у меня работает только в IDLE Python Shell окне, а если пишу код в нотпаде с расширением .py например и потом открываю его, то окно моментально закрывается и помогает только удаление команды break, в чем мб дело? Спасибо.
Code: # -*- coding: utf-8 -*- ... f = open(r"123.xml", "w+") u = u.urlopen('http://site.com') page = u.read() c = codecs.lookup("utf-8") (dPage, dPageLen) = c.decode(page) f.write(dPage) f.close() В файл сохраняются крокозяблы Code: <?xml version="1.0" encoding="UTF-8"?> <ррр> <uoy you="Ӡ벨 743" phone="743-00-00"></uoy> <uoy you="Ӡ벨 ͮ" phone="507-12-32"></uov> ... Может кто сталкивался? Кто что посоветует?