ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

01.09.2009, 18:00
|
|
Участник форума
Регистрация: 11.05.2007
Сообщений: 149
Провел на форуме: 6373157
Репутация:
247
|
|
Сообщение от rushter
Есть ли в питоне аналог пхпшной функции isset() (Проверяет на существование переменную)?
P.s Знаю что можно использовать исключения,но хотелось бы узнать есть ли такая функция.
Например так:
Код:
>>> value = 123
>>> 'value' in globals()
True
>>> 'value1' in globals()
False
также если в функции, то можно применить locals()
|
|
|

01.09.2009, 18:21
|
|
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
Провел на форуме: 2868783
Репутация:
414
|
|
Есть ли в питоне аналог пхпшной функции isset() (Проверяет на существование переменную)?
P.s Знаю что можно использовать исключения,но хотелось бы узнать есть ли такая функция.
Лучше все же использовать исключения.
|
|
|

01.09.2009, 20:15
|
|
Новичок
Регистрация: 20.04.2008
Сообщений: 11
Провел на форуме: 51055
Репутация:
0
|
|
razbх,
login999,
спасиба, щас попробую =))
|
|
|

01.09.2009, 20:43
|
|
Новичок
Регистрация: 20.04.2008
Сообщений: 11
Провел на форуме: 51055
Репутация:
0
|
|
вот..доделал, проверка стены)) на новое сообщение, пок..без всяких оповещений..просто с текстом New Message..плиз оцените, это мой первый скрипт...)
Код:
import urllib2, urllib
import cookielib
import re, time
import string
#from urllib2 import urlopen
########################
# Satan Wall 1.0(final) #
########################
Email = 'bill@microsoft.com' #мыло
pas = 'win7' #пасс
SiteWall = 'http://vkontakte.ru/wall.php?id=7' # ид стены
#начало подключение
def connect(): #создадим отдельную функцию для подключения, в дальнеишем может пригодиться)
cookie = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
urllib2.install_opener(opener)
headers = {"User-Agent" : "Mozila/4.0 (compatible; MSIE 5.5; WindowsNT)"}
page=urllib2.urlopen(urllib2.Request('http://vkontakte.ru/login.php?email='+Email+'&pass='+pas,None,headers)).read()
print 'On-line' #подключились =)
#первая проверка стены
tempVK = 0 #переменная для первого подключения
Error = 0 #счетчик ошибок
def WallOn(wall): #функция самой проверки
time.sleep(5) #пауза в 5 секунд, а куда торопиться?!))
# NewWall = wall #ровняем старую стенку новой и...
NewWalltemp = urllib2.urlopen(SiteWall).read() #...открываем стенку
NewWall = re.findall(r"\<div class\=\"summary\"\>(.*?)\<\/div\>", NewWalltemp)[0]
# print 'god, ', NewWall проверка, для отладки
if wall == NewWall: #проверяем есть ли разница между первым и вторым значением стены, промежуток..кххм)
WallOn(wall) #если всё так же, вызываем эту же функцию..вдруг всё же напишут xD
else: #но если написали
print 'New message' #говорим сразу мне
walltemp = urllib2.urlopen(SiteWall).read()
wall = re.findall(r"\<div class\=\"summary\"\>(.*?)\<\/div\>", walltemp)[0]
# wall = NewWall #записывем новую стену заместо старой)
NewWall = 'clear' #и очишаем переменную, чтобы не повторялось каждые 15 секунд о новом сообщений)
WallOn(wall) #запустим функцию заново =)
def body(tempVK, Error):
if tempVK == 0: #если это первоая проверка, то записываем в переменную значиение стенки)
walltemp = urllib2.urlopen(SiteWall).read() #вот так вот это делаем)
wall = re.findall(r"\<div class\=\"summary\"\>(.*?)\<\/div\>", walltemp)[0]
# print 'ok, ', wall #приверка, для отладки
tempVK = 1 #гооврим прямо, на сегодня хватит)
WallOn(wall) #и вызовим функцию =))
else: #если же это уже не первая проверка, и произошла какая то ошибка, то...
walltemp = urllib2.urlopen(SiteWall).read()
wall = re.findall(r"\<div class\=\"summary\"\>(.*?)\<\/div\>", walltemp)[0]
Error += 1 #прибавляем счетчику ошибок число
print 'Error: ', Error #и в слезах жалуемся мне))
WallOn(wall) #...передаем параметр стены
###########НАЧАЛО КАК НЕ СТРАННО ТУТ, В КОНЦЕ!!!##############
connect() #вызовем функцию, тоесть начнем соединение
body(tempVK, Error) #проверим стену первый раз
эм...первый скрипт =)) всем спс за помощь =))
|
|
|

01.09.2009, 22:27
|
|
Познающий
Регистрация: 11.09.2008
Сообщений: 99
Провел на форуме: 2753780
Репутация:
585
|
|
Сообщение от login999
Вот только если уж начал, то договаривай - чем же нерационально использование Queue в таком случае ?
Ок, раз тебе интересно, поясню. В том скрипте в очередь помещается 250 практически идентичных кортежей, затем поточная функция вытягивает их по-одному и использует. Но зачем? Вся эта почти одинаковая инфа ведь зазря отъедает память процесса. Можно было бы обойтись простым итератором в поточной функции, ведь его содержимое (кортежа) заранее известно. Нужно лишь использовать Lock на строке с итерацией (что, вообще говоря, элементарно как в использовании, так и для понимания).
Queue хорош в гораздо более сложных случаях - например, когда ты "демонизируешь" несколько потоков для обработки ими каких-то данных, а данные эти, например, могут поступать из другого процесса, и т.п...
Последний раз редактировалось cr0w; 01.09.2009 в 22:30..
|
|
|

02.09.2009, 09:02
|
|
Постоянный
Регистрация: 12.06.2008
Сообщений: 654
Провел на форуме: 4512757
Репутация:
973
|
|
Сообщение от cr0w
Ок, раз тебе интересно, поясню. В том скрипте в очередь помещается 250 практически идентичных кортежей, затем поточная функция вытягивает их по-одному и использует. Но зачем? Вся эта почти одинаковая инфа ведь зазря отъедает память процесса. Можно было бы обойтись простым итератором в поточной функции, ведь его содержимое (кортежа) заранее известно. Нужно лишь использовать Lock на строке с итерацией (что, вообще говоря, элементарно как в использовании, так и для понимания).
Queue хорош в гораздо более сложных случаях - например, когда ты "демонизируешь" несколько потоков для обработки ими каких-то данных, а данные эти, например, могут поступать из другого процесса, и т.п...
Эх, я-то думал дейстивтельно что-то серьезное 
Обьясню -я использую Queue по-разному, одним из таких случаев было когда у меня отдельный поток обрабатывал его наполнение и создавалась динамическая подгрузка из файла 
В случае проблем с соединением строка добавлялась обратно в Queue, то что там тебе так не понравилось это :
1) Учебный пример, я лично считаю что в учебных примерах абсолютно пофигу на нагрузку, так как он должен быть читабельнее
2) Это заранее закидон в ту сторону чтобы сразу смотреть в сторону Queue, тот кто понял о чем там написано, тот и поймет недостатки примера, а уников которые любят скопипиздить и всунуть пару своих изменений ожидает глубокое разочарование - так как для реального использования пример не покатит.
P.S. Очень дохера таких уников 
|
|
|

02.09.2009, 10:05
|
|
Познающий
Регистрация: 11.09.2008
Сообщений: 99
Провел на форуме: 2753780
Репутация:
585
|
|
login999
Я бы может и поспорил с тобой насчет того, какими должны быть учебные примеры, но это, как я уже понял, бессмысленно...
|
|
|

08.09.2009, 17:30
|
|
Новичок
Регистрация: 17.02.2009
Сообщений: 4
Провел на форуме: 98819
Репутация:
2
|
|
Изучаю питон и не как не могу разобраться с регулярным выражением.
Помогите пожалуйста разобрать строку "textone:texttwo" что бы строка до двоеточия была в одной переменной и после двоеточия во второй переменной. Заранее благодарю.
Последний раз редактировалось R[00]T1X; 08.09.2009 в 17:32..
|
|
|

08.09.2009, 17:37
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме: 2769640
Репутация:
1304
|
|
R[00]T1X Не забивайте гвозди микроскопом
Код:
str = "textone:texttwo"
a,b = str.split(':',1)
print a, '-', b
Но если очень хочется:
Код:
import re
str = "textone:texttwo"
a, b = re.search('(?msi)([^:]+):(.+)',str).groups()
print a, '-', b
__________________
Любая действущая программа устарела.
Создайте систему, которой сможет пользоваться даже дурак ,и только дурак захочет ею пользоваться.
Как правильно задавать вопросы: _http://www.yakimchuk.ru/questions.htm
Последний раз редактировалось Gifts; 08.09.2009 в 17:39..
|
|
|

08.09.2009, 17:57
|
|
Новичок
Регистрация: 17.02.2009
Сообщений: 4
Провел на форуме: 98819
Репутация:
2
|
|
Gifts
Не забивайте гвозди микроскопом
вот это точно.  Спасибо за первый вариант.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|