python - 如何使用 yield 列出目录中的文件

标签 python

iter 没有运行。我只想打印出目录/tmp 中每个文件的所有单词。

class CorpusReader:
    def __init__(self, dirname):
        self.dirname = dirname;

    def __iter__(self):
        for fname in os.listdir(self.dirname):
            for line in open(os.path.join(self.dirname,fname)):
                yield line.split()

reader = CorpusReader("/tmp") 

最佳答案

你需要的是遍历reader:

for line in reader:
    print line

更新

请记住,并非所有文件都是可读的,您需要防范这种情况:

    def __iter__(self):
        for fname in os.listdir(self.dirname):
            try:
                for line in open(os.path.join(self.dirname,fname)):
                    yield line.split()
            except IOError:
                pass  # or handle this error, most likely due to file not readable

关于python - 如何使用 yield 列出目录中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40825935/

相关文章:

python - Matplotlib : Paint cells of matrix based on indexes stored in array

python - 链表数据结构理解

python - 如何合并两个具有相同元素的字典(键 :val)

python - 熟悉 SQLAlchemy 的最简单方法/最佳教程是什么?

python - Reportlab - 如果段落对于一行来说太长,如何引入换行符

python - 我的 tkinter 按钮命令功能有问题

python - 如何在类中的方法之间共享变量?

python - 添加不同长度循环最小的列表

python - Pandas - 在连接/合并数据帧之前检查列

python - Microsoft Visual C++ 2008 Redistributable Package 可以自由再分发吗