使用`os.listdir`忽略特定文件

时间:2018-03-03 11:48:52

标签: python macos

如何更改此python代码以忽略Mac OS的.DS_Store文件?

class MySentences(object):
    def __init__(self, dirname):
        self.dirname = dirname

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

编辑:这个问题看起来很像这个问题(How to ignore hidden files using os.listdir()?),但我不知道如何在上面的类中实现该解决方案。我试过这个:

library(stackr)
questions <- stack_users(9371451, "questions", num_pages=10, pagesize=100, filter="withbody")
for (i in 1:nrow(questions)) {
    qtext <- questions$body[i]
    print(qtext)
}

但它不起作用。

1 个答案:

答案 0 :(得分:0)

您可以通过检查文件名不相等(!=)到&#34; DS_Store&#34;来使用if语句:

class MySentences(object):
    def __init__(self, dirname):
        self.dirname = dirname

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

如果文件名与此字符串相同,那么只需触发该循环,而不会触及嵌套的for语句。