我有一些这种格式的文件,我需要返回最旧和最新的文件传递给函数进行解析
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))
我可能会忽略一些小小的东西,任何帮助都会受到赞赏
答案 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是您希望的顺序的文件,然后您可以根据需要解析它们。