【发布时间】:2017-08-18 14:13:39
【问题描述】:
我正在尝试编写一个 python 脚本,它可以根据一天中的时间阻止网站,但我无法在 Windows 中编辑主机文件,即使以管理员身份运行 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 位,我也无法使用记事本编辑主机。
【问题讨论】:
-
你得到的错误是什么?
-
那么所有的
dt.now().something电话是怎么回事? -
你的缩进也关闭了。在
while True:之后,所有内容都应该缩进,这可能是导致您的问题的原因 -
我没有运行这个确切的代码(因为我不希望我的主机文件被完全破坏),但我无法重现您的问题。也许您应该详细说明您认为无法修改文件的原因(是否会引发异常?)。
-
即使以管理员身份运行 cmd 也会出现此错误: PermissionError: [Errno 13] Permission denied: 'C:\\Windows\\System32\\drivers\\etc\\hosts'