博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
通过python切换hosts文件
阅读量:6829 次
发布时间:2019-06-26

本文共 3301 字,大约阅读时间需要 11 分钟。

  做开发或测试时常需要切换hosts ,如果hosts比较多,那么频繁的打开hosts文件对地址加注释(#),再把去掉注释是个繁琐的事情。

当然,SwitchHosts 已经可以帮我们方便的解决了这个繁琐的事情。

  但笔者还是自己尝试用python写个小程序来实现切换。以需求为驱动来解决日常的问题是件非常有意思的事。

 

假如我们有一组hosts:

172.168.12.107    www.baidu.com172.168.10.213    account.baidu.com172.168.12.107    pan.baidu.com172.168.12.107    passport.baidu.com172.168.10.129    is.baidu.com172.168.12.107    un.baidu.com

写代码之前想清楚几点。

1hosts 文件一般放在我们的C:\WINDOWS\system32\drivers\etc\目录下,没有扩展名。我们可以通过记事本打开。python os模块可以用于打开本地文件。

2、我们要做的操作也很简单,加注释(加#号),去掉注释(去掉#号)。去掉注释时,当我打开浏览器访问www.baidu.com 时,其实访问的是本地的,172.168.12.107 主机。加上注释时,那么访问的就是真的百度服务器。

3、我们要做的操作是判断,每一行数据的第一个字符是否有#号,没有的话就加上。

 

打开python shell 练习加“#”操作

>>> abc = '127.168.10.107 www.baidu.com'>>> a = abc[0]>>> if a != '#':    nabc = '#'+abc    print nabc    #127.168.10.107 www.baidu.com

  定义abc字符串,abc[0] 表示取字符串的第一个字符,判断是是否为#号,如果不是,就把#号加到abc字符串的前面。

添加注释的完整代码入下:

#coding=utf-8import osdef add_jing():    input = open(r'C:\WINDOWS\system32\drivers\etc\HOSTS', 'r')    lines = input.readlines()    input.close()    output = open(r'C:\WINDOWS\system32\drivers\etc\HOSTS', 'w')    for line in lines:        if not line:            break        jing = line[0]        if jing != '#':            print line            nf = '#' + line            output.write(nf)        else:            output.write(line)  output.close()if __name__ == "__main__":    add_jing()

  程序先以读(r)的方式打开HOST文件,readlines() 方法逐行的读取内容。然后,close()关闭文件。

  程序再以写(w)的方式打开HOST文件,对readlines() 获取的每一行数据判断是否有#号,没有的话加上。并通过write() 方法写入到HOST文件中。最后close()关闭文件。

 

 

打开python shell 练习“#”号操作:

>>> abc = '#127.168.10.107 www.baidu.com'>>> a = abc[0]>>> if a == '#':    nabc = abc.replace('#','')    print nabc    127.168.10.107 www.baidu.com

  同样取字符串的第一个字符判断,如果是#号,那么通过replace()方法 将#号替换成空(’’)

去掉注释的完整代码:

def del_jing():    input = open(r'C:\WINDOWS\system32\drivers\etc\HOSTS', 'r')    lines = input.readlines()    input.close()    output = open(r'C:\WINDOWS\system32\drivers\etc\HOSTS', 'w')    for line in lines:        if not line:            break        jing = line[0]        if jing == '#':            print line            nf = line.replace('#','')            output.write(nf)        else:            output.write(line)  output.close()if __name__ == "__main__":    del_jing()

 

  通过运行add_jing() del_jing()两个函数的方式并不灵活。这里只是通过修改#的方式来切换hosts ,那么你也可以将hosts定义一个数组,直接写入到HOST文件。通过

写入不同的数组来达到切换不同hosts的目的。

#coding=utf-8import os'''内网测试环境'''insides = ['172.168.12.107 www.baidu.com',          '172.168.10.129 pan.baidu.com',          '172.168.12.107 un.baidu.com',          '172.168.12.107 passport.baidu.com']'''外网测试环境'''outsides = ['172.16.12.223 www.baidu.com',            '172.16.10.223 pan.baidu.com',            '172.16.12.111 un.baidu.com',            '172.16.12.223 passport.baidu.com']def inside_test():    output = open(r'C:\pyse\HOSTS.txt', 'w')    for insid in insides:        print insid        output.write(insid)        output.write("\n")    output.close()def outside_test():    output = open(r'C:\pyse\HOSTS.txt', 'w')    for outsid in outsides:        print outsid        output.write(outsid)        output.write("\n")    output.close()    if __name__ == "__main__":    #inside_test()    outside_test()

  上面的方式会更加简单,把定义的host数组写到HOST文件中,注意:每写一个数组元素需要加一个回车换行---write("\n")

 

  如果想继续增加切换host的便捷性,可以使用wxPython写一个host的配置界面出来,那么也就是我们的SwitchHosts 工具了。

 

 

转载地址:http://spfkl.baihongyu.com/

你可能感兴趣的文章
Performing RMAN Tablespace Point-in-time Recovery(TSPITR)
查看>>
弱引用研究
查看>>
JQuery 判断checkbox是否选中,checkbox全选,获取checkbox选中值
查看>>
高考焦虑现象源于就业焦虑
查看>>
Lync Server 2013企业版部署系列之二:准备DNS
查看>>
启动3个线程轮番打印递增的数字
查看>>
PHP FLUSH 函数 在IE11中 清除缓存的方法
查看>>
lvm相关知识
查看>>
[转] 《全唐诗》《全宋词》
查看>>
C Primer Plus (第五版) 第二章 编程练习
查看>>
安卓开发中Theme.AppCompat.Light的解决方法
查看>>
登入攻击不再是不可能!智能主动防御技术成主力防御部队
查看>>
12月18日任务 4 models基本使用 5 基本命令
查看>>
小程序开发之云函数中的时区问题
查看>>
OSChina 周日乱弹 —— 起来,不愿上班滴人们~
查看>>
OSChina 周三乱弹 —— 大家鉴定下面的这个姑娘优秀么
查看>>
Android Manifest.xml 结构详解
查看>>
Php-Web开发中浏览记录问题
查看>>
利用fake 在豆瓣小组 (半)自动化回帖功能
查看>>
jqxfileupload+springmvc上传资源
查看>>