无法读取日志文件,但在复制粘贴到记事本后可以读取

时间:2018-10-08 01:10:11

标签: python

任务:

我的任务是比较sha1_vsdt.csv内第一列和trendx.log内的字符串:匹配时,它应该在日志文件中获取描述,然后将其放入第三列的csv,否则将无法检测到

但是trendx.log无法读取,我所做的是-复制了Trendx.log的内容,然后将其粘贴到记事本中,然后在保存后即可读取。 这是可读的日志文件-trend2.log。我认为unicode格式是个问题。

我该如何阅读此日志文件?反正有转换吗?我已经尝试使用utf-16le对此进行编码,但是我只打印3行

这是我的代码

import numpy as np
import pandas as pd
import csv
import io
import shutil


pd.set_option('display.max_rows', 1000)
logtext = "trendx.log"

#Log data into dataframe using genfromtxt
logdata = np.genfromtxt(logtext,invalid_raise = False,dtype=str, comments=None,usecols=np.arange(16))
logframe = pd.DataFrame(logdata)
#print (logframe.head())

#Dataframe trimmed to use only SHA1, PRG and IP
df2=(logframe[[10,11]]).rename(columns={10:'SHA-1', 11: 'DESC'})
#print (df2.head())

#sha1_vsdt data into dataframe using read_csv
df1=pd.read_csv("sha1_vsdt.csv",delimiter=",",error_bad_lines=False,engine = 'python',quoting=3)
#Using merge to compare the two CSV

df = pd.merge(df1, df2, on='SHA-1', how='left').fillna('undetected')
df1['DESC'] = df['DESC'].values

df1.to_csv("sha1_vsdt.csv",index=False)

使用trendx.log的csv中的输出未从第1-584行中检测到

enter image description here

使用trend2.log

在csv中更正输出

enter image description here

1 个答案:

答案 0 :(得分:0)

此文件编码为UTF-16-LE。读取文件时传递rsync --version标志,如下所示:

encoding logdata = np.genfromtxt(logtext, invalid_raise=False,dtype=str, comments=None,usecols=np.arange(16) , encoding='utf_16-le'