如何使用python搜索文本文件夹中的字符串

时间:2016-05-11 15:06:24

标签: python emr

我正在编写一些脚本来处理python中的一些文本文件。本地脚本从单个txt文件读取,因此我使用

index_file =  open('index.txt', 'r')
    for line in index_file:
       ....

并遍历文件以查找匹配的字符串,但在使用amazon EMR时,index.txt文件本身会在单个文件夹中拆分为多个txt文件。

因此,我想在本地复制并从多个txt文件中读取某个字符串,但我很难找到干净的代码来执行此操作。

在编写最少代码时,最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

import os
from glob import glob

def readindex(path):
    pattern = '*.txt'
    full_path = os.path.join(path, pattern)
    for fname in sorted(glob(full_path)):
        for line in open(fname, 'r'):
            yield line
# read lines to memory list for using multiple times
linelist = list(readindex("directory"))
for line in linelist:
    print line,

此脚本定义了一个生成器(see this question for details about generators),用于遍历目录“directory”中按排序顺序扩展名为“txt”的所有文件。它产生所有行作为一个流,在调用函数之后可以迭代通过,就好像这些行来自一个打开的文件,因为这似乎是问题作者想要的。打印行末尾的逗号确保换行不会打印两次,尽管for循环的内容无论如何都会被问题作者替换。在这种情况下,可以使用line.rstrip()来删除换行符。

  

glob模块根据Unix shell使用的规则查找与指定模式匹配的所有路径名,尽管结果以任意顺序返回。