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

标签 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 行中的所有内容均未检测到

enter image description here

使用以下命令正确输出 csv:trend2.log

enter image description here

最佳答案

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

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

关于python - 无法读取日志文件,但复制粘贴到记事本后可以读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52694251/

相关文章:

python - 如何在没有页面指示的情况下迭代 API 查询中的页面?

python - 为什么多进程在 ubuntu 和 macOS 中的工作方式不同?

python - 如何在Python中将thrift对象转换为Json?

python - 如何根据 2 个可能的值检查变量?

python - 字符串的所有分割的Cythonize列表

python - 将 python 脚本转换为使用 lxml 的 etree 模块的 linux 二进制文件的问题

python - 查询 SQL Server 数据库时结果对象不返回行

python - 如何强制 2 个 Python 子进程一个接一个地运行

if 和 elif 之间的 Python 变量

Python:AttributeError: 'NoneType' 对象没有属性 'string',尽管在 IDLE 中工作