做开发或测试时常需要切换hosts ,如果hosts比较多,那么频繁的打开hosts文件对地址加注释(#),再把去掉注释是个繁琐的事情。
当然,SwitchHosts 已经可以帮我们方便的解决了这个繁琐的事情。
https://github.com/oldj/SwitchHosts
但笔者还是自己尝试用python写个小程序来实现切换。以需求为驱动来解决日常的问题是件非常有意思的事。
假如我们有一组hosts:
172.168.12.107 www.baidu.com
172.168.10.213 account.baidu.com
172.168.12.107 pan.baidu.com
172.168.12.107 passport.baidu.com
172.168.10.129 is.baidu.com
172.168.12.107 un.baidu.com
写代码之前想清楚几点。
1、hosts 文件一般放在我们的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-8 import os def 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-8 import 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 工具了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
- 张敬轩2005《我的梦想我的路》几何娱乐[WAV+CUE][1G]
- 群星《人到四十男儿情(SRS+WIZOR)》[原抓WAV+CUE]
- 马久越《上善若水HQCDII》[低速原抓WAV+CUE]
- 龚玥《女儿情思》6N纯银SQCD【WAV+CUE】
- 张惠妹《你在看我吗》大碟15 金牌大风[WAV+CUE][1G]
- 群星《左耳·听见爱情》星文唱片[WAV+CUE][1G]
- 群星《抖音嗨疯-DISCO英文版》[WAV+CUE][1G]
- 群星.1990-情义无价(TP版)【中唱】【WAV+CUE】
- 马兆骏.1990-心情·七月【滚石】【WAV+CUE】
- 方伊琪.1979-沙鸥(LP版)【星岛全音】【WAV+CUE】
- 蔡琴《醇厚嗓音》6N纯银SQCD【WAV+CUE】
- 陈曦《遇见HQCD》[WAV+CUE]
- 大提琴-刘欣欣《爱的问候》HDCD[WAV+CUE]
- 周耀辉/邓慧中《从什么时候开始》[320K/MP3][95.71MB]
- 周耀辉/邓慧中《从什么时候开始》[FLAC/分轨][361.29MB]