Невозможно отредактировать локальный файл hosts с помощью python - PullRequest
0 голосов
/ 08 ноября 2018

Я пытаюсь создать программу, которая блокировала бы определенные веб-сайты в течение определенного рабочего времени. Сначала я проверяю изменения в файле hosts (находится здесь C: \ Users \ Alberto \ Documents \ Atom \ web-blocker), который я скопировал в тот же файл, что и моя программа, перед тем как изменить основной файл hosts. Однако, несмотря на то, что мой сценарий позволяет мне правильно распечатать сообщение, когда я нахожусь в рабочее время или нет, проблема в том, что список веб-сайтов не распечатывается в локальном файле hosts. Также я запускаю программу от имени администратора.

Вот мой код:

import time
from datetime import datetime as dt

hosts_temp="hosts"
hosts_path=r"C:\Windows\System32\drivers\etc\hosts"
redirect="127.0.0.1"
website_list=["www.facebook.com","facebook.com","youtube.com","www.youtube.com"]


while True:
    if dt(dt.now().year,dt.now().month,dt.now().day,6) < dt.now() < 
dt(dt.now().year,dt.now().month,dt.now().day,19):
        print("Working hours, get back to work you future data scientist!")
        with open(hosts_temp,"r+") as file:
            content=file.read()
            for website in website_list:
                if website in content:
                    pass
                else:
                    file.write(redirect+" "+ website +"\n")

    else:
        with open(hosts_temp, 'r+') as file:
            content=file.readlines()
            file.seek(0)
            for line in content:
                if not any(website in line for website in website_list):
                    file.write(line)
                file.truncate()
         print("Fun hours...")
    time.sleep(5)

Чего мне не хватает, чтобы изменить файл локальных хостов? Заранее благодарю за помощь.

...