Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk mendapatkan alamat IP intranet tempatan dalam Python
import socket def get_local_ip_address(): ip_address = '' try: # 获取本机主机名 hostname = socket.gethostname() # 获取本机IP ip_address = socket.gethostbyname(hostname) except: pass return ip_address
import subprocess def get_local_ip_address(): ip_address = '' try: # 获取IP地址 ip_address = subprocess.check_output(['hostname', '-I']).decode('utf-8').strip() except: pass return ip_address
Kaedah ini menggunakan arahan nama hos pada sistem Unix untuk mendapatkan alamat IP dan mengembalikan alamat IP dalam format rentetan. Jika anda menggunakan sistem Windows, anda perlu menggunakan arahan ipconfig. Anda boleh menghantar arahan yang betul dalam subprocess.check_output untuk mendapatkan alamat IP pada Windows.
import socket def get_local_ip_address(): ip_address = '' try: # 获取IP地址 ip_address = socket.getaddrinfo(socket.gethostname(), None, family=socket.AF_INET, proto=socket.IPPROTO_TCP)[0][4][0] except: pass return ip_address
Kaedah ini menggunakan fungsi getaddrinfo untuk mendapatkan alamat IP komputer dan mengembalikan alamat IP dalam format rentetan.
import netifaces def get_local_ip_address(): ip_address = '' try: # 获取网络接口列表 interfaces = netifaces.interfaces() # 查找第一个非本地回环接口的IP地址 for interface in interfaces: if interface == 'lo': continue addresses = netifaces.ifaddresses(interface) ip_addresses = addresses.get(netifaces.AF_INET) if ip_addresses: ip_address = ip_addresses[0]['addr'] break except: pass return ip_address
Kaedah ini menggunakan modul netifas untuk mendapatkan senarai antara muka rangkaian komputer dan mencari alamat IP antara muka gelung balik bukan tempatan yang pertama. Ia kemudian mengembalikan alamat IP dalam format rentetan.
Jika anda menjalankan program Python pada sistem Linux, anda boleh menggunakan arahan ifconfig untuk mendapatkan alamat IP intranet. Berikut ialah fungsi Python yang boleh digunakan pada sistem Linux:
import subprocess def get_local_ip_address(): ip_address = '' try: # 获取IP地址 output = subprocess.check_output(['ifconfig']).decode('utf-8') lines = output.split('\n') for line in lines: if 'inet ' in line and not line.startswith('127.0.0.1'): ip_address = line.split()[1] break except: pass return ip_address
Kaedah ini menggunakan modul subproses untuk menjalankan perintah ifconfig Linux dan mengekstrak alamat IP daripada output arahan. Ia mengembalikan alamat IP dalam format rentetan.
Sila ambil perhatian bahawa kaedah ini hanya berfungsi pada sistem Linux. Jika anda menggunakan sistem pengendalian yang berbeza, gunakan salah satu kaedah yang dinyatakan sebelum ini untuk mendapatkan alamat IP dalaman komputer anda.
import os def get_local_ip_address(): ip_address = '' try: # 获取IP地址 ipconfig_process = os.popen('ipconfig') ipconfig_output = ipconfig_process.read() ipconfig_process.close() for line in ipconfig_output.split('\n'): if 'IPv4' in line: ip_address = line.split(': ')[-1] break except: pass return ip_address
Atas ialah kandungan terperinci Bagaimana untuk mendapatkan alamat IP intranet tempatan dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!