猿问

为什么这个循环不起作用

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

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


Edit1:这就是我现在编写的代码,并且我收到了错误的错误消息框,提示“ 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


繁星淼淼
浏览 182回答 2
2回答

慕尼黑8549860

您已将列表转换为字符串。循环遍历test将为您提供单个字符:>>> foundfiles = ['foo', 'bar']>>> for c in str(foundfiles):...     print c... ['foo','bar']无需转foundfiles成字符串。您还需要测试列表的元素,而不是test:newList = [s for s in foundfiles if s.endswith('.UnitTests.vbproj')]

SMILET

我真的不知道您的“ 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
随时随地看视频慕课网APP

相关分类

Python
我要回答