这篇文章主要讲解了使用python切换主机文件的方法,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。
做开发或测试时常需要切换主机,如果主机比较多,那么频繁的打开主机文件对地址加注释(#),再把去掉注释是个繁琐的事情。
当然,SwitchHosts已经可以帮我们方便的解决了这个繁琐的事情。https://github.com/oldj/SwitchHosts
但笔者还是自己尝试用python写个小程序来实现切换。以需求为驱动来解决日常的问题是件非常有意思的事。
假如我们有一组主机:
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,主机文件一般放在我们的C: \ WINDOWS \ system32系统\ \等司机\目录下,没有扩展名。我们可以通过记事本打开.python的os模块可以用于打开本地文件。
2,我们要做的操作也很简单,加注释(加#号)去掉注释(去掉#号)。去掉注释时,当我打开浏览器访问www.baidu.com时,其实访问的是本地的,172.168.12.107主机。加上注释时,那么访问的就是真的百度服务器。
3,我们要做的操作是判断,每一行数据的第一个字符是否有#号,没有的话就加上。
打开python shell练习加“#”号操作
在祝辞祝辞美国广播公司(abc)=& # 39; 127.168.10.107 www.baidu.com& # 39; 在在在一个abc [0]=在在在如果一个!=& # 39;# & # 39;: nabc=& # 39; # & # 39; + abc 打印nabc # 127.168.10.107 www.baidu.com定义abc字符串,abc[0]表示取字符串的第一个字符,判断是是否为#号,如果不是,就把#号加到abc字符串的前面。
添加注释的完整代码入下:
#=utf - 8编码 进口操作系统 def add_jing (): 输入=开放(" # 39;C: \ WINDOWS \ system32系统\司机等\ \主机# 39;,& # 39;" # 39;) 行=input.readlines () input.close () 输出=开放(" # 39;C: \ WINDOWS \ system32系统\司机等\ \主机# 39;,& # 39;w # 39;) 线的线: 如果不行: 打破 京[0]=行 如果静!=& # 39;# & # 39;: 打印行 nf=& # 39; # & # 39;+线 output.write (nf) 其他: output.write(线) output.close () if __name__==癬_main__": add_jing ()程序先以读(r)的方式打开主机文件,readline()方法逐行的读取内容,然后,关闭()关闭文件。
程序再以写(w)的方式打开主机文件,对readline()获取的每一行数据判断是否有#号,没有的话加上。并通过写()方法写入到主机文件中。最后关闭()关闭文件。
打开python shell练习“#”号操作:
在祝辞祝辞美国广播公司(abc)=& # 39; # 127.168.10.107 www.baidu.com& # 39; 在在在一个abc [0]=在在在如果一个==& # 39;# & # 39;: nabc=abc.replace (& # 39; # & # 39; & # 39; & # 39;) 打印nabc 127.168.10.107 www.baidu.com同样取字符串的第一个字符判断,如果是#号,那么通过取代()方法将#号替换成空(& # 39;& # 39;)
去掉注释的完整代码:
def del_jing (): 输入=开放(" # 39;C: \ WINDOWS \ system32系统\司机等\ \主机# 39;,& # 39;" # 39;) 行=input.readlines () input.close () 输出=开放(" # 39;C: \ WINDOWS \ system32系统\司机等\ \主机# 39;,& # 39;w # 39;) 线的线: 如果不行: 打破 京[0]=行 如果静==& # 39;# & # 39;: 打印行 nf=line.replace (& # 39; # & # 39; & # 39; & # 39;) output.write (nf) 其他: output.write(线) output.close () if __name__==癬_main__": del_jing ()通过运行add_jing()和del_jing()两个函数的方式并不灵活。这里只是通过修改#的方式来切换主机,那么你也可以将主机定义一个数组,直接写入到主机文件。通过
写入不同的数组来达到切换不同主机的目的。
#=utf - 8编码 进口操作系统 & # 39;& # 39;& # 39;内网测试环境& # 39;& # 39;& # 39; 内部=[& # 39;172.168.12.107 www.baidu.com& # 39; & # 39;172.168.10.129 pan.baidu.com& # 39; & # 39;172.168.12.107 un.baidu.com& # 39; & # 39;172.168.12.107 passport.baidu.com& # 39;】 & # 39;& # 39;& # 39;外网测试环境& # 39;& # 39;& # 39; 外面=[& # 39;172.16.12.223 www.baidu.com& # 39; & # 39;172.16.10.223 pan.baidu.com& # 39; & # 39;172.16.12.111 un.baidu.com& # 39; & # 39;172.16.12.223 passport.baidu.com& # 39;】 def inside_test (): 输出=开放(" # 39;C: \ pyse \ HOSTS.txt& # 39;, & # 39; w # 39;) 在内部insid: 打印insid output.write (insid) output.write (“\ n") output.close () def outside_test (): 输出=开放(" # 39;C: \ pyse \ HOSTS.txt& # 39;, & # 39; w # 39;) 外面的外在要求: 打印外在要求 output.write(外在要求) output.write (“\ n") output.close () if __name__==癬_main__": # inside_test () outside_test ()使用python切换主机文件的方法