能不能用python脚本抓取.log文件里的数据存放到excel表格中
时间: 2024-02-19 17:03:35 浏览: 154
可以的,你可以使用Python的标准库中的`open()`函数打开.log文件,然后使用正则表达式或其他方法来提取数据,最后使用Python的第三方库如`pandas`将数据存储到Excel表格中。以下是一个简单的代码示例:
```python
import re
import pandas as pd
# 打开.log文件
with open('example.log', 'r') as f:
log_data = f.read()
# 使用正则表达式提取数据
pattern = r'\[(\d+)\] (\w+): (.+)'
matches = re.findall(pattern, log_data)
# 将数据存储到DataFrame中
df = pd.DataFrame(matches, columns=['timestamp', 'level', 'message'])
# 将DataFrame存储到Excel表格中
df.to_excel('example.xlsx', index=False)
```
这段代码会将.log文件中的数据提取出来,存储到一个名为`example.xlsx`的Excel表格中。你可以根据自己的需要修改代码中的正则表达式和文件名。
相关问题
用python写个脚本,把当下文件夹下面的每个文件夹的sim.log文件中的UVM_ERROR : UVM_FATAL : 这两行信息抓取出来放在一个result_check.log的文件里,并附带路径文件夹的名字
你可以使用Python的os模块来遍历文件夹,然后利用re模块进行正则表达式匹配来提取需要的信息。以下是一个简单的脚本示例:
```python
import os
import re
# 定义结果保存的log文件名
output_log = 'result_check.log'
# 定义目标模式,即UVM_ERROR和UVM_FATAL这两行
pattern = r'(UVM_ERROR|UVM_FATAL): (.*)'
def process_folder(folder_path):
with open(os.path.join(folder_path, 'sim.log'), 'r') as file:
content = file.read()
# 使用正则表达式查找并提取信息
matches = re.findall(pattern, content, re.MULTILINE)
if matches:
for error_type, message in matches:
line = f"{folder_path}: {error_type}: {message}"
with open(output_log, 'a') as output_file:
output_file.write(line + '\n')
# 遍历当前目录及其子目录
for root, dirs, files in os.walk('.'):
for dir_name in dirs:
full_dir_path = os.path.join(root, dir_name)
process_folder(full_dir_path)
# 提醒用户检查result_check.log文件
print("完成处理,结果已写入result_check.log,请检查该文件。")
```
这个脚本会创建一个名为`result_check.log`的文件,如果在`sim.log`中有匹配到UVM_ERROR或UVM_FATAL的信息,它就会将这些信息以及对应的文件夹路径添加到`result_check.log`中。
python脚本’”分别从远程登陆1运行a.py脚本抓取lspci|grep -i 'non' | cut -f1 -d ' ' 保存到log.txt,再从远程登录2,运行a.sh脚本保存到log的末尾。“一直循环跑5次并把log都追加到log.txt里面。‘
以下是一个可能的实现:
```python
import paramiko
import time
# 连接远程服务器1
ssh1 = paramiko.SSHClient()
ssh1.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh1.connect(hostname='server1.example.com', username='username', password='password')
# 连接远程服务器2
ssh2 = paramiko.SSHClient()
ssh2.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh2.connect(hostname='server2.example.com', username='username', password='password')
for i in range(5):
# 在远程服务器1运行a.py脚本并抓取输出
stdin, stdout, stderr = ssh1.exec_command('lspci | grep -i \'non\' | cut -f1 -d \' \'')
output1 = stdout.read().decode()
# 在远程服务器2运行a.sh脚本并抓取输出
stdin, stdout, stderr = ssh2.exec_command('cat log >> log.txt')
output2 = stdout.read().decode()
# 将输出写入log.txt文件
with open('log.txt', 'a') as f:
f.write(output1 + output2)
# 等待一段时间后再次执行
time.sleep(60)
```
这个脚本使用了`paramiko`模块来连接远程服务器并执行命令。在循环中,它首先在远程服务器1上运行`lspci | grep -i 'non' | cut -f1 -d ' '`命令,抓取输出并保存到`output1`变量中。然后在远程服务器2上运行`cat log >> log.txt`命令,将`log`文件的内容追加到`log.txt`文件的末尾,并抓取输出保存到`output2`变量中。最后将`output1`和`output2`写入`log.txt`文件中,并等待60秒后再次执行。这个过程会循环执行5次。
阅读全文