本文实例讲述了python实现自动更换ip的方法。分享给大家供大家参考。具体实现方法如下:
#!/usr/bin/env python #-*- encoding:gb2312 -*- # Filename: IP.py import sitecustomize import _winreg import ConfigParser from ctypes import * print '正在进行网络适配器检测,请稍候…' print netCfgInstanceID = None hkey = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, \ r'System\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}') keyInfo = _winreg.QueryInfoKey(hkey) # 寻找网卡对应的适配器名称 netCfgInstanceID for index in range(keyInfo[0]): hSubKeyName = _winreg.EnumKey(hkey, index) hSubKey = _winreg.OpenKey(hkey, hSubKeyName) try: hNdiInfKey = _winreg.OpenKey(hSubKey, r'Ndi\Interfaces') lowerRange = _winreg.QueryValueEx(hNdiInfKey, 'LowerRange') # 检查是否是以太网 if lowerRange[0] == 'ethernet': driverDesc = _winreg.QueryValueEx(hSubKey, 'DriverDesc')[0] print '检测到网络适配器名:', driverDesc netCfgInstanceID = _winreg.QueryValueEx(hSubKey, 'NetCfgInstanceID')[0] print '检测到网络适配器ID:', netCfgInstanceID if netCfgInstanceID == None: print '没有找到网络适配器,程序退出' exit() break _winreg.CloseKey(hNdiInfKey) except WindowsError: print r'Message: No Ndi\Interfaces Key' # 循环结束,目前只提供修改一个网卡IP的功能 _winreg.CloseKey(hSubKey) _winreg.CloseKey(hkey) # 通过修改注册表设置IP strKeyName = 'System\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces\\' + netCfgInstanceID print '网络适配器的注册表地址是:\n', strKeyName hkey = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, \ strKeyName, \ 0, \ _winreg.KEY_WRITE) config = ConfigParser.ConfigParser() print print '正在打开IP.ini配置文件…' config.readfp(open('IP.ini')) IPAddress = config.get("school","IPAddress") SubnetMask = config.get("school","SubnetMask") GateWay = config.get("school","GateWay") DNSServer1 = config.get("school","DNSServer1") DNSServer2 = config.get("school","DNSServer2") DNSServer = [DNSServer1,DNSServer2] print '配置文件内设定的信息如下,请核对:' print print 'IP地址:', IPAddress print '子关掩码:', SubnetMask print '默认网关:', GateWay print '主DNS服务器:', DNSServer1 print '次DNS服务器:', DNSServer2 print res = raw_input('现在,请您决定:输入1,则将配置文件写入系统;输入2,则将现有的系统设定还原为全部自动获取;否则程序退出:') if str(res) == '1': try: _winreg.SetValueEx(hkey, 'EnableDHCP', None, _winreg.REG_DWORD, 0x00000000) _winreg.SetValueEx(hkey, 'IPAddress', None, _winreg.REG_MULTI_SZ, [IPAddress]) _winreg.SetValueEx(hkey, 'SubnetMask', None, _winreg.REG_MULTI_SZ, [SubnetMask]) _winreg.SetValueEx(hkey, 'DefaultGateway', None, _winreg.REG_MULTI_SZ, [GateWay]) _winreg.SetValueEx(hkey, 'NameServer', None, _winreg.REG_SZ, ','.join(DNSServer)) except WindowsError: print 'Set IP Error' exit() _winreg.CloseKey(hkey) print '切换成功!重置网络后即可生效' elif str(res) == '2': try: _winreg.SetValueEx(hkey, 'EnableDHCP', None, _winreg.REG_DWORD, 0x00000001) _winreg.SetValueEx(hkey, 'T1', None, _winreg.REG_DWORD, 0x00000000) _winreg.SetValueEx(hkey, 'T2', None, _winreg.REG_DWORD, 0x00000000) _winreg.SetValueEx(hkey, 'NameServer', None, _winreg.REG_SZ, None) _winreg.SetValueEx(hkey, 'DhcpConnForceBroadcastFlag', None, _winreg.REG_DWORD, 0x00000000) _winreg.SetValueEx(hkey, 'Lease', None, _winreg.REG_DWORD, 0x00000000) _winreg.SetValueEx(hkey, 'LeaseObtainedTime', None, _winreg.REG_DWORD, 0x00000000) _winreg.SetValueEx(hkey, 'LeaseTerminatesTime', None, _winreg.REG_DWORD, 0x00000000) except WindowsError: print 'Set IP Error' exit() _winreg.CloseKey(hkey) print '切换成功!重置网络后即可生效' else: print '用户手动取消,程序退出' exit('')
希望本文所述对大家的Python程序设计有所帮助。

theDifferenceBetweewneaforoopandawhileLoopInpythonisthataThataThataThataThataThataThataNumberoFiterationSiskNownInAdvance,而leleawhileLoopisusedWhenaconDitionNeedneedneedneedNeedStobeCheckedStobeCheckedStobeCheckedStobeCheckedStobeceDrepeTysepectients.peatsiveSectlyStheStobeCeptellyWithnumberofiterations.1)forloopsareAceareIdealForitoringercortersence

在Python中,for循環適用於已知迭代次數的情況,而while循環適合未知迭代次數且需要更多控制的情況。 1)for循環適用於遍歷序列,如列表、字符串等,代碼簡潔且Pythonic。 2)while循環在需要根據條件控制循環或等待用戶輸入時更合適,但需注意避免無限循環。 3)性能上,for循環略快,但差異通常不大。選擇合適的循環類型可以提高代碼的效率和可讀性。

在Python中,可以通過五種方法合併列表:1)使用 運算符,簡單直觀,適用於小列表;2)使用extend()方法,直接修改原列表,適用於需要頻繁更新的列表;3)使用列表解析式,簡潔且可對元素進行操作;4)使用itertools.chain()函數,內存高效,適合大數據集;5)使用*運算符和zip()函數,適用於需要配對元素的場景。每種方法都有其特定用途和優缺點,選擇時應考慮項目需求和性能。

foroopsare whenthenemberofiterationsisknown,而whileLoopsareUseduntilacTitionismet.1)ForloopSareIdealForeSequencesLikeLists,UsingSyntaxLike'forfruitinFruitinFruitinFruitIts:print(fruit)'。 2)'

toConcateNateAlistofListsInpython,useextend,listComprehensions,itertools.Chain,orrecursiveFunctions.1)ExtendMethodStraightForwardButverBose.2)listComprechencomprechensionsareconconconciseandemandeconeandefforlargerdatasets.3)

Tomergelistsinpython,YouCanusethe操作員,estextMethod,ListComprehension,Oritertools

在Python3中,可以通過多種方法連接兩個列表:1)使用 運算符,適用於小列表,但對大列表效率低;2)使用extend方法,適用於大列表,內存效率高,但會修改原列表;3)使用*運算符,適用於合併多個列表,不修改原列表;4)使用itertools.chain,適用於大數據集,內存效率高。

使用join()方法是Python中從列表連接字符串最有效的方法。 1)使用join()方法高效且易讀。 2)循環使用 運算符對大列表效率低。 3)列表推導式與join()結合適用於需要轉換的場景。 4)reduce()方法適用於其他類型歸約,但對字符串連接效率低。完整句子結束。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

SublimeText3 Linux新版
SublimeText3 Linux最新版

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中