亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

如何使用python切換hosts文件

 更新時間:2020年04月29日 10:48:28   作者:蟲師  
這篇文章主要介紹了如何使用python切換hosts文件,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

  做開發(fā)或測試時常需要切換hosts ,如果hosts比較多,那么頻繁的打開hosts文件對地址加注釋(#),再把去掉注釋是個繁瑣的事情。

當(dāng)然,SwitchHosts 已經(jīng)可以幫我們方便的解決了這個繁瑣的事情。

https://github.com/oldj/SwitchHosts

  但筆者還是自己嘗試用python寫個小程序來實現(xiàn)切換。以需求為驅(qū)動來解決日常的問題是件非常有意思的事。

假如我們有一組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、我們要做的操作也很簡單,加注釋(加#號),去掉注釋(去掉#號)。去掉注釋時,當(dāng)我打開瀏覽器訪問www.baidu.com 時,其實訪問的是本地的,172.168.12.107 主機。加上注釋時,那么訪問的就是真的百度服務(wù)器。

3、我們要做的操作是判斷,每一行數(shù)據(jù)的第一個字符是否有#號,沒有的話就加上。

打開python shell 練習(xí)加“#”號操作

>>> 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() 方法逐行的讀取內(nèi)容。然后,close()關(guān)閉文件。

  程序再以寫(w)的方式打開HOST文件,對readlines() 獲取的每一行數(shù)據(jù)判斷是否有#號,沒有的話加上。并通過write() 方法寫入到HOST文件中。最后close()關(guān)閉文件。

打開python shell 練習(xí)“#”號操作:

>>> 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()兩個函數(shù)的方式并不靈活。這里只是通過修改#的方式來切換hosts ,那么你也可以將hosts定義一個數(shù)組,直接寫入到HOST文件。通過

寫入不同的數(shù)組來達(dá)到切換不同hosts的目的。

#coding=utf-8
import os

'''內(nèi)網(wǎng)測試環(huán)境'''
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']

'''外網(wǎng)測試環(huán)境'''
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數(shù)組寫到HOST文件中,注意:每寫一個數(shù)組元素需要加一個回車換行---write("\n")

  如果想繼續(xù)增加切換host的便捷性,可以使用wxPython寫一個host的配置界面出來,那么也就是我們的SwitchHosts 工具了。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用Python合并PDF文件并添加自定義目錄及頁腳的全過程

    使用Python合并PDF文件并添加自定義目錄及頁腳的全過程

    在處理文檔時,我們經(jīng)常遇到需要合并多個PDF文件并添加目錄及頁腳的情況,本文將介紹如何使用Python,特別是PyPDF2和reportlab庫來實現(xiàn)這一功能我們將通過一個實用的示例來演示整個過程,需要的朋友可以參考下
    2024-03-03
  • python構(gòu)造icmp echo請求和實現(xiàn)網(wǎng)絡(luò)探測器功能代碼分享

    python構(gòu)造icmp echo請求和實現(xiàn)網(wǎng)絡(luò)探測器功能代碼分享

    本文分享了二個python示例,python構(gòu)造icmp echo請求、實現(xiàn)網(wǎng)絡(luò)探測器功能代碼,類似nmap功能
    2014-01-01
  • python基于exchange函數(shù)發(fā)送郵件過程詳解

    python基于exchange函數(shù)發(fā)送郵件過程詳解

    這篇文章主要介紹了python基于exchange函數(shù)發(fā)送郵件過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • 總結(jié)Python使用過程中的bug

    總結(jié)Python使用過程中的bug

    今天給大家?guī)淼氖顷P(guān)于Python的相關(guān)知識,文章圍繞著Python使用過程中的bug展開,文中有非常詳細(xì)的介紹,需要的朋友可以參考下
    2021-06-06
  • Python使用Rich實現(xiàn)美化終端顯示效果

    Python使用Rich實現(xiàn)美化終端顯示效果

    Rich庫的功能就像它的名字一樣,使Python編程更加豐富(rich),用來幫助開發(fā)者在控制臺(命令行)輸出中創(chuàng)建豐富、多彩和具有格式化的文本,下面我們就來了解下它的具體使用吧
    2024-02-02
  • python 協(xié)程 gevent原理與用法分析

    python 協(xié)程 gevent原理與用法分析

    這篇文章主要介紹了python 協(xié)程 gevent原理與用法,結(jié)合實例形式分析了Python協(xié)程gevent相關(guān)概念、原理、安裝及使用操作技巧,需要的朋友可以參考下
    2019-11-11
  • python操作MySQL數(shù)據(jù)庫具體方法

    python操作MySQL數(shù)據(jù)庫具體方法

    堅持每天學(xué)一點,每天積累一點點,作為自己每天的業(yè)余收獲,這個文章是我在吃飯的期間寫的,利用自己零散的時間學(xué)了一下python操作MYSQL,所以整理一下。我采用的是MySQLdb操作的MYSQL數(shù)據(jù)庫。先來一個簡單的例子吧
    2013-10-10
  • 跟老齊學(xué)Python之私有函數(shù)和專有方法

    跟老齊學(xué)Python之私有函數(shù)和專有方法

    這篇文章是老齊學(xué)Python系列文章的一篇,主要介紹了跟私有函數(shù)和專有方法,需要的朋友可以參考下
    2014-10-10
  • python中Scikit-learn庫的高級特性和實踐分享

    python中Scikit-learn庫的高級特性和實踐分享

    Scikit-learn是一個廣受歡迎的Python庫,它用于解決許多機器學(xué)習(xí)的問題,在本篇文章中,我們將進(jìn)一步探索Scikit-learn的高級特性和最佳實踐,需要的朋友可以參考下
    2023-07-07
  • Pytorch 圖像變換函數(shù)集合小結(jié)

    Pytorch 圖像變換函數(shù)集合小結(jié)

    這篇文章主要介紹了Pytorch 圖像變換函數(shù)集合小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02

最新評論