
大家好,今天来聊聊如何使用 Python 从 txt 文件中读取 IP 地址。这个看似简单的小任务,可能会让一些初学者头疼不已。"什么?读取 IP 地址需要写这么多代码?"别急,让我来一步一步教,保证搞定这个问题后,会觉得"这有什么难的嘛!"
需要一个存放 IP 地址的 txt 文件。可以自己创建一个,或者从网上找一个现成的。比如我这里有一个 ip.txt 文件,里面存几个 IP 地址:
192.168.1.1 10.0.0.5 127.0.0.1 8.8.8.8
现在开始动手吧。第一步,需要导入 Python 的内置 `open()` 函数,用于打开文件:
with open('ip.txt', 'r') as file:
# 在这里读取文件内容
注意,使用 `with` 语句来打开文件,这样可以确保文件在使用完毕后自动关闭,不会造成资源泄露。`'r'` 参数表示以只读模式打开文件。
接下来,需要读取文件内容。最简单的方法就是使用 `readlines()` 函数,它会将文件中的每一行都读取出来,放到一个列表中:
with open('ip.txt', 'r') as file:
ip_addresses = file.readlines()
现在,`ip_addresses` 变量就是一个列表,里面包含文件中的所有 IP 地址,每个 IP 地址占一行。但是,这里有一个问题:每个 IP 地址后面都会有一个换行符 `\n`。需要把它去掉,否则后续处理会有问题。
with open('ip.txt', 'r') as file:
ip_addresses = [line.strip() for line in file.readlines()]
这里使用列表推导式,将每一行的换行符 `\n` 去掉。现在,`ip_addresses` 就是一个干净的 IP 地址列表。
接下来,可以遍历这个列表,打印出每个 IP 地址:
with open('ip.txt', 'r') as file:
ip_addresses = [line.strip() for line in file.readlines()]
for ip in ip_addresses:
print(ip)
输出结果会是这样:
192.168.1.1 10.0.0.5 127.0.0.1 8.8.8.8
是不是超级简单?但是,想做一些更复杂的事情,比如验证 IP 地址的合法性,或者统计 IP 地址的分布情况,该怎么办呢?别担心,这些后面会讲到。
需要验证 IP 地址的合法性。可以使用正则表达式来实现这个功能:
import rewith open('ip.txt', 'r') as file:
ip_addresses = [line.strip() for line in file.readlines()]
for ip in ip_addresses:
if re.match(r'^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$', ip):
print(f'Valid IP address: {ip}')
else:print(f'Invalid IP address: {ip}')
这里,使用 `re.match()` 函数来检查每个 IP 地址是否符合正则表达式的格式。符合,就输出"Valid IP address",否则输出"Invalid IP address"。
接下来,让统计一下 IP 地址的分布情况。可以使用一个字典来存储每个 IP 地址出现的次数:
import rewith open('ip.txt', 'r') as file:
ip_addresses = [line.strip() for line in file.readlines()]
ip_count = {}
for ip in ip_addresses:
if re.match(r'^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$', ip):
if ip in ip_count:
ip_count[ip] += 1
else:
ip_count[ip] = 1
for ip, count in ip_count.items():
print(f'IP address {ip} appears {count} times')
在这个例子中,首先使用字典 `ip_count` 来存储每个 IP 地址出现的次数。遍历 `ip_addresses` 列表,对于每个合法的 IP 地址,检查它是否已经在 `ip_count` 字典中,在,则计数加 1,不在,则添加一个新的键值对。遍历 `ip_count` 字典,打印出每个 IP 地址出现的次数。
这就是如何使用 Python 从 txt 文件中读取 IP 地址的基本操作。当然,这只是冰山一角,还可以做更多有趣的事情,比如分析 IP 地址的地理分布,或者检测 IP 地址的异常行为。不过那就留给自己去探索吧,相信一定能玩转 Python 的 IP 地址处理!