在嵌套循环中重置Python列表内容

时间:2016-02-12 13:50:44

标签: python list loops reset

我有一些这种格式的文件,我需要返回最旧和最新的文件传递给函数进行解析

Nv_NODE_DATE_TIME

我希望输出为

Nv_stats_172550_160211_230030
Nv_stats_172550_160212_142624
Nv_stats_75AKPD0_160211_230030
Nv_stats_75AKPD0_160212_142624

但是我得到绝对的第一项和绝对的最后一项

Nv_stats_172550_160211_230030
Nv_stats_75AKPD0_160212_142624
Nv_stats_172550_160211_230030
Nv_stats_75AKPD0_160212_142624

这是当前的代码

import os

iostatslocalpath="/root/svc/testing/"
svchost='SVC_Cluster01'
nodenames=['75AKMX0', '75AKPD0', '172550', '172561']

filelist=sorted(os.listdir(iostatslocalpath+svchost+'/.'))
totalfilenumber=len(filelist)

def parse(filename, length):
        print filename[0]
        print test[length-1]

for nodename in nodenames:
        test=[]
        test[:]=[]
        for file in filelist:
                if nodename and "Nv" in file:
                        test.append(file)
        parse(test, len(test))

我可能会忽略一些小小的东西,任何帮助都会受到赞赏

2 个答案:

答案 0 :(得分:1)

请注意

def parse(filename, length):
    print filename[0]
    print test[length-1]

使用测试。你应该做到这一点

def parse(filename, length):
    print filename[0]
    print filename[length-1]

然后

if nodename and "Nv" in file:

首先执行,然后执行和。 5.15. Operator precedence因此相当于

if (nodename) and ("NV" in file):

由于你循环遍历节点名称,所以第一部分总是如此。

您可能想要使用

if (nodename in file) and ("Nv" in file):

答案 1 :(得分:0)

除了sabbahillel所说的,test返回正确的列表,但是这个parse函数看起来很奇怪,因为你要求它打印列表中的第一项,然后是最后一项,所以它赢了' t根据需要打印所有文件。以下代码将正确打印,但我相信您的parse函数是您混淆的根源:

import os

iostatslocalpath="/root/svc/testing/"
svchost='SVC_Cluster01'
nodenames=sorted(['75AKMX0', '75AKPD0', '172550', '172561'])

filelist=sorted(os.listdir(iostatslocalpath+svchost+'/.'))
# print filelist
totalfilenumber=len(filelist)

def parse(filename, length):
        print filename[0]
        print test[length-1]

for nodename in nodenames:
        test=[]
        test[:]=[]
        for file in filelist:
                if nodename in file and "Nv" in file:
                        test.append(file)
        for x in test:
            print(x)

输出:

Nv_stats_172550_160211_230030
Nv_stats_172550_160212_142624
Nv_stats_75AKPD0_160211_230030
Nv_stats_75AKPD0_160212_142624

因此x是您希望的顺序的文件,然后您可以根据需要解析它们。