📜  使用Python从文件中提取 IP 地址(1)

📅  最后修改于: 2023-12-03 14:49:49.807000             🧑  作者: Mango

使用Python从文件中提取 IP 地址

在网络安全、日志分析等领域中,常常需要从大量日志文件中提取IP地址,Python是一种高效的实现工具。本文介绍如何使用Python从文件中提取IP地址。

步骤
1. 读取文件

首先需要使用Python读取日志文件,常用的方法是使用open函数打开文件,然后使用readlines函数逐行读取文件。代码示例如下:

with open('access.log', 'r') as f:
    lines = f.readlines()
2. 正则表达式匹配IP地址

Python标准库re提供了强大的正则表达式匹配功能,可以方便快捷地从文本中提取IP地址。IP地址的正则表达式如下:

import re

pattern = re.compile(r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}')
3. 提取IP地址

读取文件并使用正则表达式匹配IP地址之后,接下来需要提取匹配到的IP地址。使用Python的列表推导式可以方便快捷地提取IP地址。代码示例如下:

ips = [pattern.search(line).group() for line in lines if pattern.search(line)]
4. 去重并保存

最后需要去重并保存提取到的IP地址。使用set函数可以方便快捷地去重,使用文件操作函数将IP地址保存到文件中。代码示例如下:

ips = list(set(ips))

with open('ips.txt', 'w') as f:
    for ip in ips:
        f.write(ip + '\n')
完整代码
import re

pattern = re.compile(r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}')

with open('access.log', 'r') as f:
    lines = f.readlines()

ips = [pattern.search(line).group() for line in lines if pattern.search(line)]

ips = list(set(ips))

with open('ips.txt', 'w') as f:
    for ip in ips:
        f.write(ip + '\n')
总结

使用Python从文件中提取IP地址,可以快速高效地完成IP地址的提取工作。需要注意的是,正则表达式匹配IP地址需要考虑到各种情况,以保证提取的IP地址正确无误。