You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python Pandas处理多log前缀txt文件提取共有IP并导出Excel?

Python Pandas 实现多日志文件IP比对导出方案

前置依赖

首先安装需要的第三方库:

pip install pandas openpyxl

完整实现代码

#!/usr/bin/env python3
import os
import pandas as pd

# -------------------------- 配置参数(按需修改) --------------------------
LOG_DIR = "/var/logs"          # 日志文件存放的目录
TARGET_FILE_PREFIX = "log"     # 目标文件的文件名前缀
OUTPUT_PATH = "ip_result.xlsx" # 最终输出的Excel文件路径
# ------------------------------------------------------------------------

ip_column_list = []

# 遍历目录读取所有符合条件的txt文件
for file_name in os.listdir(LOG_DIR):
    # 筛选log开头、.txt结尾的文件
    if file_name.startswith(TARGET_FILE_PREFIX) and file_name.endswith(".txt"):
        full_file_path = os.path.join(LOG_DIR, file_name)
        # 读取txt中IP,默认每行1个IP,无表头
        single_file_ips = pd.read_table(
            full_file_path,
            header=None, # 不需要把第一行当表头
            on_bad_lines="skip" # 自动跳过不符合格式的行
        )[0].unique() # 去重当前文件的重复IP,不需要去重可删除该方法
        # 转成Pandas Series,列名为对应文件名
        ip_column = pd.Series(single_file_ips, name=file_name)
        ip_column_list.append(ip_column)

# 合并所有IP列,长度不一致的位置自动填充空值
result_df = pd.concat(ip_column_list, axis=1)

# 计算所有文件共有的IP(所有列的非空IP交集)
common_ip_set = None
for col_name in result_df.columns:
    current_col_ips = set(result_df[col_name].dropna())
    common_ip_set = current_col_ips if common_ip_set is None else common_ip_set & current_col_ips

# 新增Common IPs列存共同IP
result_df["Common IPs"] = pd.Series(list(common_ip_set))

# 导出到Excel,不写入行索引
result_df.to_excel(
    OUTPUT_PATH,
    sheet_name="IP对比结果",
    index=False,
    engine="openpyxl"
)

注意事项

  • 如果你的txt文件中IP不是单独占一行,而是和其他内容用分隔符隔开,可以在pd.read_table中添加sep="分隔符"参数提取对应列的IP
  • 共同IP列长度不足的位置会自动填充空值,不影响原有列的内容

内容的提问来源于stack exchange,提问作者Peter Walker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 15:15:03