多くの場合、開発やテストを行うときにホストを切り替える必要があります。ホストがさらにある場合は、ホストファイルを頻繁に開いてアドレスにコメント(#)を追加してから、コメントを削除するのは面倒な作業です。
もちろん、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 \ drivers \ etc \ディレクトリに配置されます。メモ帳で開くことができます。 pythonのosモジュールを使用して、ローカルファイルを開くことができます。
2、 私たちがしなければならない操作も非常に簡単で、コメントを追加(#記号を追加)、コメントを削除(#記号を削除)します。コメントを削除するとき、ブラウザを開いてwww.baidu.comにアクセスすると、実際にはローカルホストの172.168.12.107にアクセスします。コメントが追加されると、実際のBaiduサーバーにアクセスします。
3、 私たちがしなければならない操作は、データの各行の最初の文字に#記号があるかどうかを判断することです。ない場合は、それを追加します。
pythonシェルを開き、「#」の追加を練習します
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-8import 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()メソッドがコンテンツを1行ずつ読み取ります。次に、close()はファイルを閉じます。
次に、プログラムは(w)を書き込んでHOSTファイルを開き、readlines()によって取得されたデータの各行に#記号があるかどうかを判断し、ない場合は追加します。そして、write()メソッドを介してHOSTファイルに書き込みます。最後に、close()はファイルを閉じます。
pythonシェルを開き、「#」操作を練習します。
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()
2つの関数add_jing()とdel_jing()を実行する方法は柔軟ではありません。 #を変更してホストを切り替えるだけです。次に、ホストの配列を定義して、HOSTファイルに直接書き込むこともできます。沿って
異なるホスト間で切り替える目的を達成するために、異なるアレイを記述します。
# coding=utf-8import 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ファイルに書き込みます。注:各配列要素は、キャリッジリターンとラインフィードを使用して書き込む必要があります—write( "\ n")
ホストの切り替えの利便性を引き続き高めたい場合は、wxPythonを使用してホスト構成インターフェイスを作成できます。これがSwitchHostsツールです。
以上が本稿の内容ですので、皆様のご勉強に役立てていただければ幸いです。
Recommended Posts