在嵌套循环中重置 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是你想要的顺序的文件,然后你按照你的意愿解析它们。
我有一些这种格式的文件,我需要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是你想要的顺序的文件,然后你按照你的意愿解析它们。