使用python切换主机文件的方法

  介绍

这篇文章主要讲解了使用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切换主机文件的方法