写出python代码,用argparse。能在任何文件夹读取Log。具体如下: 1.读取log,当读取到最后一次出现"My name is kitty"时,从下一行开始读 2.删除所有重复的行,只留第一行 3.第一行按照正则规则1分列后,写入新的CSV文件Output 4.从下一行开始按照正则规则2分列后,继续写入新的CSV文件Output 5.读取CSV文件Output 6.把标题行分为4类,第一类是标题为ABC,DFG的2列,第二类是CAT开头的几列,第三类是DOG开头的几列,第四类是Fish开头的几列 7.把4类标题画成曲线图
时间: 2024-03-05 11:52:20 浏览: 43
以下是符合要求的Python代码,其中需要自己定义正则表达式和曲线图的绘制方式。
```python
import argparse
import re
import csv
# 定义命令行参数
parser = argparse.ArgumentParser(description='处理log文件并绘制曲线图')
parser.add_argument('log_file', type=str, help='要处理的log文件的路径')
parser.add_argument('--output_file', type=str, default='Output.csv', help='输出CSV文件的路径')
args = parser.parse_args()
# 读取log文件
with open(args.log_file, 'r') as f:
lines = f.readlines()
# 找到最后一次"My name is kitty"的位置
last_kitty_index = -1
for i, line in enumerate(lines):
if 'My name is kitty' in line:
last_kitty_index = i
# 删除重复的行,只留第一行
unique_lines = []
for i in range(last_kitty_index+1, len(lines)):
if lines[i] not in unique_lines:
unique_lines.append(lines[i])
# 将第一行按照正则表达式1分列
regex1 = r'your regex pattern 1'
header1 = re.findall(regex1, unique_lines[0])[0]
header1_columns = header1.split(',')
# 将剩余行按照正则表达式2分列
regex2 = r'your regex pattern 2'
data = []
for line in unique_lines[1:]:
columns = re.findall(regex2, line)[0].split(',')
data.append(columns)
# 写入CSV文件
with open(args.output_file, 'w', newline='') as f:
writer = csv.writer(f)
writer.writerow(header1_columns)
writer.writerows(data)
# 读取CSV文件
with open(args.output_file, 'r', newline='') as f:
reader = csv.reader(f)
rows = [row for row in reader]
# 将标题行分为4类
header = rows[0]
category1 = [header.index('ABC'), header.index('DFG')]
category2 = [i for i in range(len(header)) if header[i].startswith('CAT')]
category3 = [i for i in range(len(header)) if header[i].startswith('DOG')]
category4 = [i for i in range(len(header)) if header[i].startswith('Fish')]
# 绘制曲线图
# TODO: 根据4类标题绘制曲线图
```
阅读全文