Почему я застрял в бесконечной петле? - PullRequest
0 голосов
/ 22 марта 2019

В настоящее время я пишу скрипт на Python и работаю в бесконечном цикле. Аналогичный код работает, но это не так:

while True:
    print ("test")
    sleep(2)
    try:
        doc = html.fromstring(page.content)

        XPATH_PRICE = '//div[@id="product_detail_price"]//content()'
        print(XPATH_PRICE)
        RAW_PRICE = doc.xpath('//div[@id="product_detail_price"]')[0].values()[4]
        print("RAW PRICE:")
        print(RAW_PRICE)
        PRICE = ' '.join(''.join(RAW_PRICE).split()).strip() if RAW_PRICE else None
        print(PRICE)

        data = {
            'PRICE': PRICE,
            'URL': url,
        }

        return data
    except Exception as e:
        print e

1 Ответ

4 голосов
/ 22 марта 2019

Изменить эту часть :

except Exception as e:
    print e

к этому :

except Exception as e:
    print(e)
    break

И если вы break используете, пока перехватываете исключение , кажется, нет смысла иметь while True, удалите эту часть:

while True:
    print ("test")
    sleep(2)

Но если вы используете подход while True, поместите break state где-нибудь в цикле:

while True:
print ("test")
sleep(2)
try:
    doc = html.fromstring(page.content)
    if some_cond:
       break

EDIT :

Позвольте мне попытаться сделать это проще. Откуда мы находимся двумя способами:

Первый подход :

def some_function():
  try:
       #Your expected code here
       return True
  except:
       # will come to this clause when an exception occurs.
       return False

Второй подход :

while True:
    if some_cond
        break
    else:
        continue

Учитывая ваш Кодекс, я бы предложил выбрать первый подход.

OR

Если намерение по-прежнему заключается в try -ing, если не указано конкретное условие, а не break в исключении:

bFlag = False
while bFlag == False:
    try:
        if some_cond:
           bFlag = True
    except:
        continue
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...