程序笔记   发布时间:2022-07-13  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了我用python自制hosts修改神器,组长说你他娘的还真是个天才(附源码)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

❤️欢迎订阅《从实战学python》专栏࿰c;用python实现爬虫、办公自动化、数据可视化、人工智能等各个方向的实战案例࿰c;有趣又有用!❤️

更多精品专栏简介点这里

所谓的诗和远方࿰c;不过是࿰c;要把眼前的苟且࿰c;熬过了才有。

前言

哈喽࿰c;大家好࿰c;我是一条。

相信使用Windows的小伙伴在工作中遇到需要频繁hosts时都非常苦恼。主要有这几个原因:

  • 路径复杂࿰c;Windowshosts文件位于C:WindowsSystem32driversetchosts目录下࿰c;不是很好记。
  • 多次修改之后终于记下了࿰c;或者在桌面创建快捷方式࿰c;但更烦的是需要管理员权限。
  • 有时候只是需要将某一行注释或取消注释࿰c;也要打开文件修改。(一条工作中主要就是这种情况)

针对以上痛点࿰c;一条自制了一款修改神器࿰c;2秒内切换/修改完hostsc;可不要小看这两秒࿰c;效率是第一生产力࿰c;另外这可是个装x神器。

文末有C站内测投票可体验

效果展示

目前主要实现了三个功能࿰c;使用方法为win + R 打开命令行窗口࿰c;输入文件名(h.py)࿰c;回车࿰c;键盘输入对应功能的数字。

我用python自制hosts修改神器,组长说你他娘的还真是个天才(附源码)

比如需要修改࿰c;键盘输入2࿰c;在输入要修改的行号即可。

1–查看

我用python自制hosts修改神器,组长说你他娘的还真是个天才(附源码)

2–修改(根据行号增加或者取消注释)

我用python自制hosts修改神器,组长说你他娘的还真是个天才(附源码)

3–新增

我用python自制hosts修改神器,组长说你他娘的还真是个天才(附源码)

话不多说࿰c;看下如何实现的。(文末附完整代码)

管理员启动

神器的核心部分࿰c;查了一下资料࿰c;万能的python果然有能够以管理员权限执行脚本的神器。

就是他——ctypes

主要代码就是这句:

ctypes.windll.sHell32.SHellExecuteW(None, "runas", sys.executable, __file__, None, 1)

其中有一个参数为__file__c;这句代码是获取管理员权限然后重新执行该文件。这个系统命令并不是主程序完成的࿰c;而是以管理员身份重新开了一个进程执行系统命令。并有一个自己的控制台。

有了管理员权限后࿰c;只要对hosts文件进行读写即可。

查看

读取文件࿰c;按行打印即可࿰c;为了方便c;加了行号。

我用python自制hosts修改神器,组长说你他娘的还真是个天才(附源码)

主要代码

def show():
    lineNum = 1
    with open("C:WindowsSystem32driversetchosts", "r") as f:
        linesList = f.readlines()
    for i in linesList:
        print(str(lineNum) + " " + i, end="")
        lineNum = lineNum + 1
    input("please press enter exit")

修改

先执行查看࿰c;然后输入对用的行号࿰c;判断每行开头字符是否是#c;是去掉࿰c;不是在开头加上。

实现注释/非注释的切换。

我用python自制hosts修改神器,组长说你他娘的还真是个天才(附源码)

主要代码

def edit():
    lineNum=1
    with open("C:WindowsSystem32driversetchosts", "r") as f:
        linesList=f.readlines()
    for i in linesList:
        print(str(lineNum)+" "+i,end="")
        lineNum =lineNum+1
    linenumber=int(input("please enter linenumber:"))
    if(linesList[linenumber-1].startswith("#")):
        linesList[linenumber-1]=linesList[linenumber-1].replace("#","",1)
    else:
        linesList[linenumber-1]="#"+linesList[linenumber-1]
    with open("C:WindowsSystem32driversetchosts", "a+") as f:
        f.truncate(0)
        f.writelines(linesList)

新增

输入你要新增的内容࿰c;写入文件即可。

我用python自制hosts修改神器,组长说你他娘的还真是个天才(附源码)

主要代码

def add(addStr):
    with open("C:WindowsSystem32driversetchosts", "a+") as f:
            f.write(addStr+"n")
    print(addStr+"thava add")
    input("please press enter exit")

部署

为了速度达到最快࿰c;采用win+R的方式打开࿰c;这样即使你在处理复杂的事情࿰c;也不用回到桌面࿰c;不用打开文件࿰c;一触即达!

  • 新建h.py文件
  • 粘贴完整代码࿰c;保存文件
  • 将文件放入C:WindowsSystem32目录下
  • win + R输入h.py即可打开
  • 键盘输入数字使用相应功能

完整代码

#pip install name 安装
import ctypes, sys

def is_admin():
    try:
        return ctypes.windll.sHell32.IsUserAnAdmin()
    except:
        return false


def add(addStr):
    with open("C:WindowsSystem32driversetchosts", "a+") as f:
            f.write(addStr+"n")
    print(addStr+"thava add")
    input("please press enter exit")

def edit():
    lineNum=1
    with open("C:WindowsSystem32driversetchosts", "r") as f:
        linesList=f.readlines()
    for i in linesList:
        print(str(lineNum)+" "+i,end="")
        lineNum =lineNum+1
    linenumber=int(input("please enter linenumber:"))
    if(linesList[linenumber-1].startswith("#")):
        linesList[linenumber-1]=linesList[linenumber-1].replace("#","",1)
    else:
        linesList[linenumber-1]="#"+linesList[linenumber-1]
    with open("C:WindowsSystem32driversetchosts", "a+") as f:
        f.truncate(0)
        f.writelines(linesList)
    input("please press enter exit")

def show():
    lineNum = 1
    with open("C:WindowsSystem32driversetchosts", "r") as f:
        linesList = f.readlines()
    for i in linesList:
        print(str(lineNum) + " " + i, end="")
        lineNum = lineNum + 1
    input("please press enter exit")
if __name__ == '__main__':
    if is_admin():
        print("hosts编辑器nAuthor:一条codingnData:2021-08-21nVersion:0.0.1")
        operateType = input("查看hosts:1n编辑hosts:2n新增hosts:3")
        if (operateType == "1"):
            show()
        if (operateType == "2"):
            edit()
        if (operateType == "3"):
            addStr=input("please type your content:")
            add(addStr)
    else:
        ctypes.windll.sHell32.SHellExecuteW(None, "runas", sys.executable, __file__, None, 1)

最后

⭐今天是坚持刷题更文的第36/100天

⭐各位的点赞、关注、收藏、评论、订阅就是一条创作的最大动力

为了回馈各位粉丝࿰c;礼尚往来࿰c;给大家准备了一条多年积累下来的优质资源࿰c;包括 学习视频、面试资料、珍藏电子书等

大家可以评论留言或者私信我领取

我用python自制hosts修改神器,组长说你他娘的还真是个天才(附源码)

大佬总结

以上是大佬教程为你收集整理的我用python自制hosts修改神器,组长说你他娘的还真是个天才(附源码)全部内容,希望文章能够帮你解决我用python自制hosts修改神器,组长说你他娘的还真是个天才(附源码)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。