どのようにpythonを使ってhostsファイルを切り替えますか?


開発やテストをするには常にホームスティスを切り替える必要があります。もしホームスティスが多いなら、頻繁にホームスティスファイルを開いてアドレスに注釈を付けて、コメントを削除するのは煩わしいことです。
もちろん、Switch Hostsはもうこの煩雑なことを簡単に解決してくれます。
https://github.com/oldj/SwitchHosts
しかし、笔者は自分でpythonで小さなプログラムを书き换えることを试みました。需要を駆動して日常の問題を解決するのはとても面白いことです。
もしホームがあるなら、
172.68.12.07 wwww.baidu.com
172.68.10.213 account.baidu.com
172.68.12.07パン.baidu.com
172.68.12.07 passport.baidu.com
172.68.10.1229 is.baidu.com
172.68.12.07 un.baidu.com
コードを書く前に、何点が分かりたいですか?
1、hostsファイルは普通私達のC:\WINDOWS\system 32\drivers\etc\目次の下に置いてあります。拡張子はありません。私たちは手帳で開けられます。pythonのosモジュールはローカルファイルを開くために使用できます。
2、私たちがやるべき操作も簡単です。コメントを入れて、コメントを抜きます。コメントを削除する時、ブラウザを開けてwww.baidu.comにアクセスする時、実は地元の172.68.12107ホストを訪問しました。コメントを入れると、本当にBaiduサーバにアクセスします。
3、私たちがやるべき操作は、各行のデータの最初の文字が「葨号」であるかどうかを判断します。ない場合は「加えます。」
python shellを開けて練習します。

>>> abc = '127.168.10.107 www.baidu.com'
>>> a = abc[0]
>>> if a != '#':
  nabc = '#'+abc
  print nabc
#127.168.10.107 wwww.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()
プログラムはまずHOSTファイルを読んで(r)、readlines(readlines)の方法で逐行して内容を読み取ります。その後、close()はファイルを閉じます。
プログラムはHOSTファイルを書き込み(w)で開き、ラインごとに取得したデータがあるかどうかを判断します。ない場合は加えます。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 wwww.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("
") output.close() def outside_test(): output = open(r'C:\pyse\HOSTS.txt', 'w') for outsid in outsides: print outsid output.write(outsid) output.write("
") output.close() if __name__ == "__main__": #inside_test() outside_test()
上記の方法はより簡単になります。定義されたhost配列をHOSTファイルに書きます。注意:配列要素を書くごとに、リターンをプラスして改行する必要があります。
引き続きhostの切り替えの利便性を高めたいなら、wxPythonを使ってhostの配置画面を書いてもいいです。つまり、私たちのSwitHostsツールです。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。