我在一个函数中遇到了一些问题,该函数应该标识您的操作系统并返回到该主机文件的相应路径,以便程序可以读取该文件并向其中添加更多行。当函数返回“TypeError:应为str、bytes或os.PathLike对象,而不是NoneType”时,问题依赖于将函数调用到open()语句中。这是我的密码:
import time
import os
import platform
from datetime import datetime as dt
from sys import platform as _platform
def osFinder():
if _platform == "Linux" or _platform == "Linux2":
return "/etc/hosts"
elif _platform == "darwin":
return "/etc/hosts"
elif _platform == "win32":
return r"C:\Windows\System32\drivers\etc\hosts"
elif _platform == "win64":
return r"C:\Windows\System32\drivers\etc\hosts"
# Host Files PATH:
# windows_path = r"C:\Windows\System32\drivers\etc\hosts"
# unix_path = "/etc/hosts"
temp_path = osFinder()
redirect = "127.0.0.1"
sitesList = [
"www.facebook.com",
"www.netflix.com",
"www.youtube.com"
]
from_hour = 7
to_hour = 16
while True:
if dt(dt.now().year, dt.now().month, dt.now().day, from_hour) < dt.now() < dt(dt.now().year, dt.now().month, dt.now().day, to_hour):
print("Working")
with open(temp_path, 'r+') as file:
content = file.read()
for site in sitesList:
if site in content:
pass
else:
file.write(redirect + " " + site + "\n")
else:
print("Happy Streaming")
with open(temp_path, 'r+') as file:
content = file.readlines()
file.seek(0)
for line in content:
if not any(site in line for site in sitesList):
file.write(line)
file.truncate()
time.sleep(1)
在
osFinder
中,平台名称不正确(all values in the doc)。“linux”没有资本,“linux2”从python3.3开始就不存在了我只是写
osFinder
:这可以用一种更像Python的方式重写:
希望有帮助
相关问题 更多 >
编程相关推荐