python中的循环错误

时间:2018-07-28 09:01:32

标签: python for-loop

为什么我去“如果没有(网站列表中的行)”时出现错误,为什么我需要网站变量?呵呵帮助

当我执行“ 如果没有(网站列表中的行) ”时,该行中会弹出错误,为什么我需要在其中添加另一个变量“ website”为了执行这个?顺便说一下,我是一个初学者。

我在工作时间内创建了一个拦截器应用程序。

import time
import numpy as np
from datetime import datetime as dt

hosts_temp = "hosts" #temporary
hosts_path = r"C:\Windows\System32\drivers\etc\hosts"
redirect = "127.0.0.1"
website_list = np.array(["www.facebook.com", "facebook.com", "fb.com"])

while True:

    if dt(dt.now().year, dt.now().month, dt.now().day, 8) < dt.now() < dt(dt.now().year, dt.now().month, dt.now().day, 9):
        print("Working hours")
        with open(hosts_temp, "r+") as file:
            content = file.read()
            for debsite in website_list:
                if debsite in content:
                    pass 
                else:
                    file.write(redirect + " " + debsite + '\n')

    else:
        with open(hosts_temp, 'r+') as file:
            content = np.array(file.readlines())
            file.seek(0)
            for line in content:
                if not any(website in line for website in website_list): # I CAN'T UNDERSTAND THIS LINE
                # ^ cant understand this 
                    file.write(line)
            file.truncate()
        print("Fun hours")
    time.sleep(3)

1 个答案:

答案 0 :(得分:1)

if not any(website in line for website in website_list)

此行的意思是“如果website_list不包含任何website使得line包含website

any函数接受一个可迭代对象,并检查是否至少有一个元素具有真值。

website in line for website in website_listTrue / False系列的生成器,其中具有索引True的{​​{1}}表示idx包含{{1} }在索引line

website不起作用,因为idx返回if not any(line in website_list)line in website_list。它的含义也不同,True表示“ False包含至少一个等于line in website_list的元素”