为什么这个循环不起作用

时间:2013-05-16 12:03:47

标签: python function loops

def cut(path):
    test = str(foundfiles)
    newList = [s for s in test if test.endswith('.UnitTests.vbproj')]
    for m in newList:
        print m
    return newList

此函数解析findliles,这是我已经解析了大约20多个文件的文件夹中的文件列表。我需要解析每个文件的列表,以“.UnitTests.vbproj”结尾。但是,我无法让它工作。任何建议将不胜感激!

Edit1:这就是我现在编写的代码,我得到了atrribute错误消息框,说'tuple'对象没有属性'endswith'

def cut(path):
    test = foundfiles
    newList = [s for s in foundfiles if s.endswith('.UnitTests.vbproj')]
    for m in newList:
        print m
    return newList

2 个答案:

答案 0 :(得分:2)

您将列表转换为字符串。循环遍历test会改为为您提供个性化字符:

>>> foundfiles = ['foo', 'bar']
>>> for c in str(foundfiles):
...     print c
... 
[
'
f
o
o
'
,

'
b
a
r
'
]

无需将foundfiles转换为字符串。您还需要测试列表的元素,而不是test

newList = [s for s in foundfiles if s.endswith('.UnitTests.vbproj')]

答案 1 :(得分:0)

我真的不知道你的'foundfiles'是什么类型的。 也许这种方式会对你有所帮助:

def cut(path):
    import os
    newlist = []
    for parent,dirnames,filenames in os.walk(path):
        for FileName in filenames:
            fileName = os.path.join(parent,FileName)
            if fileName.endswith('.UnitTests.vbproj'):newlist.append(fileName)
   return newlist