我正在尝试编写一个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位。
答案 0 :(得分:1)
首先, 如果您不是管理员,请通过右键单击->属性->安全性更改主机文件的权限,并允许用户拥有读取/写入/执行权限。 然后以管理员身份打开命令提示符并运行脚本。它将起作用!
答案 1 :(得分:0)
尝试将python文件另存为.pyw扩展名 这将为您工作。
答案 2 :(得分:0)
转到hosts文件,然后取消选中“只读”,然后转到“安全性”选项卡,并向用户授予读写权限。希望它能工作。
答案 3 :(得分:-1)
只需将路径更改为:
hosts_location = "C:\\Windows\\System32\\drivers\\etc\\hosts"
没有r&#34;,它会起作用