-4
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:这就是我现在编写的代码,我得到属性错误消息框,说'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
4

2 回答 2

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')]
于 2013-05-16T12:05:36.083 回答
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
于 2013-05-16T15:12:46.000 回答