如何使用Python 3.x在不同的文件中搜索不同的字符串

时间:2016-09-12 18:07:04

标签: python python-3.x

我正在尝试搜索一大组文本文件(160K),以查找为每个文件更改的特定字符串。我有一个文本文件,目录中的每个文件都包含我想要搜索的字符串值。基本上我想使用python创建一个新的文本文件,它提供文件名,字符串,如果字符串存在则为1,如果不存在则为0。

我目前使用的方法是从文本文件创建字典。从那里我被卡住了。这是我在伪代码中的数字:

<div style="overflow-x: scroll; overflow-y: scroll">
    <rsweb:ReportViewer ID="rptViewer" runat="server" Width="100%" PageCountMode="Actual"></rsweb:ReportViewer>
</div>

谢谢。它需要有点高效,因为它需要经过大量的文本。

这是我最终的结果

**assign dictionary**
d = {}
with open('file.txt') as f:
  d = dict(x.rstrip().split(None, 1) for x in f)

**loop through directory**
for filename in os.listdir(os.getcwd()):

***here is where I get lost***
match file name to dictionary
look for string
write filename, string, 1 if found
write filename, string, 0 if not found

1 个答案:

答案 0 :(得分:0)

据我了解你的问题,字典将文件名与字符串相关联

d = {
 "file1.txt": "widget",
 "file2.txt": "sprocket", #etc
}

如果每个文件都不是太大,您可以将每个文件读入内存:

for filename in os.listdir(os.getcwd()):
    string = d[filename]
    if string in open(filename, 'r').read():
        print(filename, string, "1")
    else: 
        print(filename, string, "0")

此示例使用print,但您可以写入文件。在循环outfile = open("outfile.txt", 'w')之前打开输出文件,而不是打印使用

outfile.write("{} {} {}\n".format(filename, string, 1))

另一方面,如果每个文件太大而无法轻松放入内存,您可以使用Search for string in txt file Python

中所述的mmap