求高手帮忙,想利用python提取文件夹下面所有文本中指定内容到excel

zw7938496 2019-01-09 04:33:37
单个文本如下:
Receive:display memory
Memory utilization statistics at 2018-12-27 22:10:47 230 ms
System Total Memory: 8021212 Kbytes
Total Memory Used: 988720 Kbytes
Memory Using Percentage: 12%
State: Non-overload
Overload threshold: 95%, Overload clear threshold: 75%, Duration: 60s
----------------------------
ServiceName MemUsage(KB)
----------------------------
FEA 123150
CMF 106301
VLAN 22124
SYSTEM 14708
FEC 13386
IFM 12360
DEVICE 10387
IP STACK 4266
OSPF 3583
MSTP 2134
RM 1467
LOCAL PKT 1285
ARP 974
EUM 345
OAM 264
ND 240
STACKMNG 236
AAA 199
DHCP 183
FIBRESM 178
NETSTREAM 153
SLA 143
SMLK 101
TUNNEL 53
TNLM 50
PNP 37
RGM 34
ETRUNK 27
RBS 20
PEM 0
----------------------------
<dis1_sw1>
Receive:display cpu
CPU utilization statistics at 2018-12-27 22:10:48 475 ms
System CPU Using Percentage : 9%
CPU utilization for five seconds: 6%, one minute: 9%, five minutes: 6%.
Max CPU Usage : 56%
Max CPU Usage Stat. Time : 2015-05-21 21:32:22 866 ms
State: Non-overload
Overload threshold: 95%, Overload clear threshold: 75%, Duration: 1800s
---------------------------
ServiceName UseRate
---------------------------
SYSTEM 6%
DEVICE 3%
RBS 0%
ETRUNK 0%
EUM 0%
OAM 0%
RGM 0%
NETSTREAM 0%
DHCP 0%
TNLM 0%
MSTP 0%
RM 0%
SLA 0%
OSPF 0%
PNP 0%
FEC 0%
TUNNEL 0%
PEM 0%
IP STACK 0%
STACKMNG 0%
CMF 0%
LOCAL PKT 0%
VLAN 0%
AAA 0%
ARP 0%
FIBRESM 0%
FEA 0%
IFM 0%
ND 0%
SMLK 0%
---------------------------
CPU Usage Details
----------------------------------------------------------------
CPU Current FiveSec OneMin FiveMin Max MaxTime
----------------------------------------------------------------
cpu0 7% 6% 12% 7% 75% 2015-05-21 21:32:24
cpu1 11% 4% 9% 5% 80% 2017-11-16 17:00:22
cpu2 11% 6% 10% 6% 83% 2015-10-27 03:20:15
cpu3 10% 9% 8% 9% 83% 2015-05-21 21:32:24
----------------------------------------------------------------


提取内容:
1.Memory Using Percentage: 后面的百分比
2.System CPU Using Percentage : 后面的百分比


效果如下:
...全文
536 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
AcceptSocket 2019-01-20
  • 打赏
  • 举报
回复
如果那两行要取信息的文本所在行数是固定的话,还可以把遍历的过程省略掉试试。
胖子吴 2019-01-19
  • 打赏
  • 举报
回复 1
import os
import re
import xlrd,xlwt

def find_files(s_path):
    res = {}
    file_list = os.listdir(s_path)
    for filename in file_list:
        abs_filename = os.path.join(s_path,filename)
        if os.path.isfile(abs_filename):
            #打开文件
            with open(abs_filename,"r",encoding="utf8") as f:
                for line in f:
                    m1 = re.search("^Memory Using.*\s+(\d+%)$",line)
                    if m1:
                        m_data = m1.group(1)
                    m2 = re.search("^System CPU Using.*\s+(\d+%)$",line)
                    if m2:
                        cpu_data = m2.group(1)
            res[abs_filename] = (m_data,cpu_data)
        elif os.path.isdir(abs_filename):
            find_files(abs_filename)
        else:
            print("不是文件夹,也不是文件")

    return res

#创建excel 文件
def write_excel(data):
    writebook = xlwt.Workbook()  # 打开一个excel
    sheet = writebook.add_sheet('data')  # 在打开的excel中添加一个sheet
    # 添加表头
    sheet.write(0,0,'文件名')
    sheet.write(0, 1, '内存占比')
    sheet.write(0, 2, 'CPU占比')
    # 65535 最大行,可以自行拆分
    for index,item in enumerate(data):
        sheet.write(index+1,0,item)  # 文件名
        sheet.write(index+1,1,data[item][0])
        sheet.write(index+1,2,data[item][1])

    writebook.save("result.xls")

if __name__ == "__main__":
    s = r"E:\Computer\Python\Code\系统模块\test" #更换自己的路径
    res = find_files(s)
    write_excel(res)
jeky_zhang2013 2019-01-10
  • 打赏
  • 举报
回复
python 对这种文本处理的效率很高,研究下正则表达式
陈年椰子 2019-01-10
  • 打赏
  • 举报
回复
先帖个遍历文本文件代码


def seek_files(check_path, ext_key):
# 列出文件夹下所有ext_key 后缀的文件,不处理子目录
list_files = []
cur_list = os.listdir(check_path)
for i in range(0 ,len(cur_list)):
file_path = os.path.join(check_path, cur_list[i])
if os.path.isfile(file_path):
if cur_list[i].upper().find(ext_key.upper()) > 0:
list_files.append([cur_list[i], file_path])
return list_files

txt_list = seek_files(r'D:\demo','txt')
陈年椰子 2019-01-10
  • 打赏
  • 举报
回复
开个400分的贴应该可以完成代码。
zw7938496 2019-01-10
  • 打赏
  • 举报
回复
能把具体代码写出来吗?
陈年椰子 2019-01-09
  • 打赏
  • 举报
回复
遍历目录下的所有文本文件名
打开文本文件
逐行读文本
如果包含 Memory Using Percentage , 取 百分比 , 记录到 列表
如果包含 System CPU Using Percentage , 取 百分比 , 记录到 列表
把列表保存到excel , (可以用pandas 也可以用openpyxl)


逻辑比较清晰呀。

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧