【问题标题】:Python - search files from the values in a listPython - 从列表中的值中搜索文件
【发布时间】:2017-12-15 13:41:18
【问题描述】:

我对 Python 很陌生,我正在尝试解决以下问题。我想用单词迭代一个 List 并在文件中查找它,如果找到,则返回找到单词的行号。

files = glob.iglob(os.path.join(in_dir, '*.*'))
List = ['word1', 'word2',...'wordn']

for index, word in enumerate(List):
    print(index, word)

    for item in files: # Iterate all files in Input directory
        filename = os.path.basename(item) # Copy the filename without the path
        print('file: {0}'.format(filename))
        with open(item, 'r') as f:
            for num, line in enumerate(f, 0):
                if word in line:
                    print('num: {0}, line: {1}'.format(num, line))

但它似乎不起作用,它只搜索列表的第一个值。我想要做的是搜索每个文件中的所有 List 值。

【问题讨论】:

    标签: python python-3.x list filesystems python-3.6


    【解决方案1】:

    我认为您的问题是 iglob 返回了一个生成器。它是一个一次性迭代器,在第一个“for item in files”循环期间使用。您需要将 iglob 替换为 glob(返回列表而不是一次性使用迭代器),或者为每个循环重新调用 iglob。

    阅读有关生成器的更多信息:

    还有 glob 文档:

    希望这可以帮助您朝着正确的方向前进!

    编辑(注意): iglob 优于 glob 的优点是它不适用于内存中的整个列表。如果您有一个非常大的列表(很多项目 * 每个项目在内存中的大小),那么 iglob 可能会比 glob 具有性能优势。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-27
      • 1970-01-01
      • 1970-01-01
      • 2020-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多