为什么我陷入无休止的循环?

时间:2019-03-22 11:35:48

标签: python loops

我目前正在编写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 个答案:

答案 0 :(得分:4)

更改此部分

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

编辑

让我尝试使其更简单。我们有两种方式:

第一种方法

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的状态,除非有特定的条件,而不是break例外:

bFlag = False
while bFlag == False:
    try:
        if some_cond:
           bFlag = True
    except:
        continue