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)
使用 csv 输出:trendx.log
从第 1 行 - 584 中未检测到所有内容
使用以下命令在 csv 中正确输出:trend2.log
解决方案
该文件被编码为 UTF-16-LE。encoding
读取文件时传入标志,如下所示:
logdata = np.genfromtxt(logtext, invalid_raise=False,dtype=str, comments=None,usecols=np.arange(16)
, encoding='utf_16-le'
)
推荐阅读
- typescript - 如何在打字稿中的所有子根的 URL 上附加查询参数
- c++ - 在 .lib 中找不到头文件
- java - 我可以转换 RDD
到数据框的一种方式,我可以将这些 POJO 写入具有与 POJO 相同的属性名称的表中? - sql-server - 如何从管道分隔的 .csv 文件中更新/插入数据到表中
- java - 从 Java 执行 Unix 脚本
- unit-testing - 如何在另一个类中使用一个类的模拟来 JUNIT 测试用于捕获参数的 void 方法?
- c++ - 如何修复 C++ 中的“分段错误(核心转储)”?
- javascript - 如何在html中插入视频源?
- talend - 循环/迭代中的 tHiveInput?
- python-3.x - 如何从目录中读取视频文件以在程序中使用文件名