无法使用python编辑主机文件

时间:2017-08-18 14:13:39

标签: python windows cmd hosts

我正在尝试编写一个python脚本,它可以根据一天中的时间阻止网站,但我无法在Windows中编辑hosts文件,即使以管理员身份运行cmd也是如此。 这是代码:

import time
from datetime import datetime as dt 
hosts_location=r"C:\Windows\System32\drivers\etc\hosts"
hosts_temp="hosts"
blocked_websites=['www.facebook.com','facebook.com']
redirect="127.0.0.1"

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,17):
    with open(hosts_location,"r+") as file:
        content=file.read()
        for website in blocked_websites:
            if website in content:
                pass
            else:
                file.write(redirect+"\t"+website+"\n")
    print("Working Hours....")
else:
    with open(hosts_location,"r+") as file:
        content=file.readlines()
        file.seek(0)
        for line in content:
            if not any(website in line for website in blocked_websites):
                file.write(line)
        file.truncate()
    print("Fun Time...")
time.sleep(5)

更新:代码对于本地主机文件工作正常但是当我尝试用于真实主机文件时,即使作为管理员,脚本也会闪烁,并且cmd显示消息“[Errno 13]:Permission Denied”。 即使作为管理员,我也无法使用记事本编辑主机我的操作系统是Windows 10家庭版64位。

4 个答案:

答案 0 :(得分:1)

首先, 如果您不是管理员,请通过右键单击->属性->安全性更改主机文件的权限,并允许用户拥有读取/写入/执行权限。 然后以管理员身份打开命令提示符并运行脚本。它将起作用!

答案 1 :(得分:0)

尝试将python文件另存为.pyw扩展名 这将为您工作。

答案 2 :(得分:0)

转到hosts文件,然后取消选中“只读”,然后转到“安全性”选项卡,并向用户授予读写权限。希望它能工作。

答案 3 :(得分:-1)

只需将路径更改为:

hosts_location = "C:\\Windows\\System32\\drivers\\etc\\hosts"

没有r&#34;,它会起作用