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

Resetting Python list contents in nested loop

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

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))

我可能忽略了一些小问题,如有任何帮助,我们将不胜感激

请注意

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:

先做in,再做and。 5.15. Operator precedence 因此相当于

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

由于您在节点名上循环,因此第一部分始终为真。

您可能想使用

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

除了 sabbahillel 所说的,test returns 正确的列表,但是这个 parse 函数看起来很奇怪,因为你要求它打印列表中的第一项,然后最后,因此它不会按您的意愿打印所有文件。以下代码将正确打印它,尽管我相信您的 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是你想要的顺序的文件,然后你按照你的意愿解析它们。