中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用python切換hosts文件的方法

發布時間:2020-07-29 11:55:32 來源:億速云 閱讀:262 作者:小豬 欄目:開發技術

這篇文章主要講解了使用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(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 工具了。

看完上述內容,是不是對使用python切換hosts文件的方法有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平和县| 崇义县| 温宿县| 聂荣县| 西林县| 界首市| 青铜峡市| 高淳县| 四子王旗| 襄城县| 仁怀市| 铜山县| 雷波县| 南昌县| 京山县| 宣威市| 交城县| 定襄县| 本溪市| 随州市| 库车县| 营口市| 西乌珠穆沁旗| 阳西县| 兴业县| 荣成市| 赤壁市| 广丰县| 衡水市| 嘉义县| 华坪县| 吉安县| 博客| 化州市| 红桥区| 渭南市| 阳东县| 阿克| 巩义市| 波密县| 北安市|