繁体   English   中英

从python中的日志文件中读取特定列

[英]Reading in specific columns from a log file in python

我正在尝试使用Python读取此文件,但是我不断收到ValueError: Need more than 0 values to unpack 想知道是否有人可以提供帮助?

我需要阅读此文件并选择特定的列,以便以后可以将这些值放在高图表中。

在文件中,第一行为空,这是我认为可能导致此错误的原因,但是我不确定如何解决此问题。 该文件如下所示:

2014年4月23日星期三00:00:13 GMT
ID用户PR NUM VIR RE MEH S CPU MM TIMESTA INFO
1555根19 0 3162m 1.7g 8192 S 34.6 22.1 955:04.48资源
1566没有人19 0 2172m 2.9g 8192 S 22.6 33.1 955:04.48 resource2

这是我目前使用的代码:

import csv

r = csv.reader(open("C:/test.log"))

ID = []
user = []
PR =[]
NUM = []
VIR = []
RE = []
MEH = []
S = []
CPU = []
MM = []
TIMESTA = []
INFO = []

for ID, user, PR, NUM, VIR, RE, MEH, S, CPU, MM, TIMESTA, INFO in r:
    ID.append(ID)
    user.append(user)
    PR.append(PR)
    NUM.append(NUM)
    VIR.append(VIR)
    RE.append(RE)
    MEH.append(MEH)
    S.append(S)
    CPU.append(CPU)
    MM.append(MM)
    TIMESTA.append(TIMESTA)
    INFO.append(INFO)

print ID, CPU, MM, INFO

谢谢

首先,您不能在for循环中将临时值命名为与要在其中存储信息的列表相同的名称。 另外,该日志文件不是CSV文件。 CSV表示逗号分隔的值,例如

a, b, c

您想要的是这样的东西。

log = open('C:/test.log', 'r').read().splitlines() # read the file, split by line, and remove extraneous whitespace.
log = log[2:] # get rid of 1st and second lines.
log = [line.split(' ') for line in log] # split each line by spaces
ID = []
users = []
# etc.
for line in log:
    ID.append(line[0])
    users.append(line[1])
    # etc.

我没有对此进行测试,但它应该可以工作:)祝您好运。

我想你想这样做。

import csv
from itertools import islice

rs = csv.reader(open("C:/test.log", 'rb'), delimiter=' ')

IDs      = []
users    = []
PRs      = []
NUMs     = []
VIRs     = []
REs      = []
MEHs     = []
Ss       = []
CPUs     = []
MMs      = []
TIMESTAs = []
INFOs    = []

for ID, user, PR, NUM, VIR, RE, MEH, S, CPU, MM, TIMESTA, INFO in islice(rs, 2, None):
    IDs.append(ID)
    users.append(user)
    PRs.append(PR)
    NUMs.append(NUM)
    VIRs.append(VIR)
    REs.append(RE)
    MEHs.append(MEH)
    Ss.append(S)
    CPUs.append(CPU)
    MMs.append(MM)
    TIMESTAs.append(TIMESTA)
    INFOs.append(INFO)

print IDs, CPUs, MMs, INFOs

输入(test.log):

Wed Apr 23 00:00:13 GMT 2014
ID USER PR NUM VIR RE MEH S CPU MM TIMESTA INFO
1555 root 19 0 3162m 1.7g 8192 S 34.6 22.1 955:04.48 resource
1566 nobody 19 0 2172m 2.9g 8192 S 22.6 33.1 955:04.48 resource2

输出:

['1555', '1566'] ['34.6', '22.6'] ['22.1', '33.1'] ['resource', 'resource2']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM