HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > PHP
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #311  
Старый 01.09.2009, 18:00
n3m0
Участник форума
Регистрация: 11.05.2007
Сообщений: 149
Провел на форуме:
6373157

Репутация: 247
Отправить сообщение для n3m0 с помощью ICQ
По умолчанию

Цитата:
Сообщение от rushter  
Есть ли в питоне аналог пхпшной функции isset() (Проверяет на существование переменную)?
P.s Знаю что можно использовать исключения,но хотелось бы узнать есть ли такая функция.
Например так:

Код:
>>> value = 123
>>> 'value' in globals()
True
>>>  'value1' in globals()
False
также если в функции, то можно применить locals()
 
Ответить с цитированием

  #312  
Старый 01.09.2009, 18:21
razb
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
Провел на форуме:
2868783

Репутация: 414


Отправить сообщение для razb с помощью ICQ
По умолчанию

Цитата:
Есть ли в питоне аналог пхпшной функции isset() (Проверяет на существование переменную)?
P.s Знаю что можно использовать исключения,но хотелось бы узнать есть ли такая функция.
Лучше все же использовать исключения.
 
Ответить с цитированием

  #313  
Старый 01.09.2009, 20:15
Admin Derek
Новичок
Регистрация: 20.04.2008
Сообщений: 11
Провел на форуме:
51055

Репутация: 0
По умолчанию

razbх,
login999,
спасиба, щас попробую =))
 
Ответить с цитированием

  #314  
Старый 01.09.2009, 20:43
Admin Derek
Новичок
Регистрация: 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)    #проверим стену первый раз
эм...первый скрипт =)) всем спс за помощь =))
 
Ответить с цитированием

  #315  
Старый 01.09.2009, 22:27
cr0w
Познающий
Регистрация: 11.09.2008
Сообщений: 99
Провел на форуме:
2753780

Репутация: 585
По умолчанию

Цитата:
Сообщение от login999  
Вот только если уж начал, то договаривай - чем же нерационально использование Queue в таком случае ?
Ок, раз тебе интересно, поясню. В том скрипте в очередь помещается 250 практически идентичных кортежей, затем поточная функция вытягивает их по-одному и использует. Но зачем? Вся эта почти одинаковая инфа ведь зазря отъедает память процесса. Можно было бы обойтись простым итератором в поточной функции, ведь его содержимое (кортежа) заранее известно. Нужно лишь использовать Lock на строке с итерацией (что, вообще говоря, элементарно как в использовании, так и для понимания).
Queue хорош в гораздо более сложных случаях - например, когда ты "демонизируешь" несколько потоков для обработки ими каких-то данных, а данные эти, например, могут поступать из другого процесса, и т.п...

Последний раз редактировалось cr0w; 01.09.2009 в 22:30..
 
Ответить с цитированием

  #316  
Старый 02.09.2009, 09:02
login999
Постоянный
Регистрация: 12.06.2008
Сообщений: 654
Провел на форуме:
4512757

Репутация: 973


По умолчанию

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

  #317  
Старый 02.09.2009, 10:05
cr0w
Познающий
Регистрация: 11.09.2008
Сообщений: 99
Провел на форуме:
2753780

Репутация: 585
По умолчанию

login999

Я бы может и поспорил с тобой насчет того, какими должны быть учебные примеры, но это, как я уже понял, бессмысленно...
 
Ответить с цитированием

  #318  
Старый 08.09.2009, 17:30
R[00]T1X
Новичок
Регистрация: 17.02.2009
Сообщений: 4
Провел на форуме:
98819

Репутация: 2
По умолчанию

Изучаю питон и не как не могу разобраться с регулярным выражением.
Помогите пожалуйста разобрать строку "textone:texttwo" что бы строка до двоеточия была в одной переменной и после двоеточия во второй переменной. Заранее благодарю.

Последний раз редактировалось R[00]T1X; 08.09.2009 в 17:32..
 
Ответить с цитированием

  #319  
Старый 08.09.2009, 17:37
Gifts
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..
 
Ответить с цитированием

  #320  
Старый 08.09.2009, 17:57
R[00]T1X
Новичок
Регистрация: 17.02.2009
Сообщений: 4
Провел на форуме:
98819

Репутация: 2
По умолчанию

Gifts
Цитата:
Не забивайте гвозди микроскопом
вот это точно. Спасибо за первый вариант.
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ