通过python切换hosts文件
做开发或测试时常需要切换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(rC:\WINDOWS\system32\drivers\etc\HOSTS, r) lines = input.readlines() input.close() output = open(rC:\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(rC:\WINDOWS\system32\drivers\etc\HOSTS, r) lines = input.readlines() input.close() output = open(rC:\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]
outside_test()
上面的方式会更加简单,把定义的host数组写到HOST文件中,注意:每写一个数组元素需要加一个回车换行---write("\n")
如果想继续增加切换host的便捷性,可以使用wxPython写一个host的配置界面出来,那么也就是我们的SwitchHosts 工具了。
python制作词云,创建txt文件 1.本文简介 2.所需要用到的第三方库 3.需要的txt文件 4.大概流程 5.词云优化 6.完整代码和成果展示 7.词云扩展 1.本文简介 词云广泛应用于ppt、新闻、文章中,能突出下文所要讲述的主体,能在作品中添加一张词云肯定是加分的。下面主要是我最近学到的制作简单的词云的方法,各方面我会尽量讲的细致一点,希望能对大家有所帮助。 2.所需要用到的第三方库 from wordcloud import WordCloud import matplotlib.pyplot as plt import jieba 第一个库是制作词云所需要的(根据英文意思也能知道);第二个库能进行优秀
python 使用ftplib连接ftp服务器获取目录、文件及它们的修改时间 * 获取当前路径或者指定路径下的文件、目录 * 检查指定路径是目录还是文件 * 根据目录、文件的修改时间来判断是否下载ftp的文件。 由于ftplib中的FTP无法满足我这一需求,所以只能重写一个MyFTP类继承FTP,写一个方法来实现,除了这个还实现了一个获取当前目录下的所有目录及文件。
相关文章
- 微信小程序开发:python+sanic 实现小程序登录注册
- Python模块学习filecmp文件比较
- 在Python中操作文件之truncate()方法的使用教程
- python处理文件、文件夹-小结
- Python 入门(七)函数
- 小白学 Python 爬虫(12):urllib 基础使用(二)
- Python 字符串_python 字符串截取_python 字符串替换_python 字符串连接
- Python编程语言学习:python语言中快速查询python自带模块&函数的用法及其属性方法、如何查询某个函数&关键词的用法、输出一个类或者实例化对象的所有属性和方法名之详细攻略
- Python的IDE:基于Eclipse/MyEclipse软件的PyDev插件配置python的开发环境(不同python项目加载不同版本的python)—从而实现Python编程图文教程之详细攻略
- Python基础——PyCharm版本——第八章、文件I/O(核心2——JSON序列化与反序列化——超重点)
- 已解决2. Set PROTOCOL_BUPFERS_PYTHON_iMPLEMENTATION=python (but this will use pure-Python parsing and w
- 《看漫画学Python》1、2版分享,python最佳入门教程,中学生用业余时间都能学会,北大教授看完都这样定义它
- 数据分析想学python,资源推荐!!!
- 利用python采集数据,让自己的耳朵随时充满美妙声音~
- Github年度最值得推荐的TOP30 Python项目,值得收藏
- Python学习28:map/reduce
- Python全栈之路:文件file常用操作
- python 将一个JSON 字典转换为一个Python 对象
- python通过os.walk() 遍历出多级目录下所有文件绝对路径
- Python中的魔术(双下划线'__xxx__')方法详解
- python 栈道实现
- Python快速上手系列--元组--详解篇
- 2022全网最全教程,Python接口测试实战之发送HTTP请求
- 【python 9】python注册器
- python的文件读取基础入门(read(),readlines(),with.open())
- 如何将Python的上级目录的文件导入?【from.import】