1

我对python很陌生,但我在C#方面有相当多的经验。我喜欢的一件事是你通过 Linq-Framework 获得的一组工具。因此,我在 Python 中寻找一些等价物,并且似乎有一些尝试。除了我刚刚没有开始工作而且似乎已经死去的 pynq 之外,我发现 itertools 有一些选择可以进入这个方向。但我仍然有问题让它工作。我想要的是目录中不是目录的条目列表。是的,我相信还有很多其他可能更好的方法可以做到这一点,但我想用 itertools 解决这个问题,因为类似的问题也可能出现在其他地方。

import os, itertools

listing = os.listdir(".")
filteredfiles = itertools.ifilterfalse(lambda dirContent: os.path.isdir(dirContent), listing)
for f in filteredfiles:
    print "found file: " + f

这给了我目录完整内容的输出。如果我用 ifilter 替换 ifilterfalse,我会得到一个空列表。

我只能猜测它只是不适用于对 os.path.isdir(...) 的复杂调用,但我不确定。

谁能给我一个答案?基本上,正如我上面所说,我只想要一些类似 Linq 的可能性来过滤 Iterables。我不喜欢循环。他们让我头晕目眩。;-)

4

1 回答 1

1

您需要在检查之前创建完整的路径名:

os.path.isdir(os.path.join(path, dirContent))
于 2012-10-18T20:19:37.893 回答