从文件中查找具有另一个文件Python内容的行

时间:2016-10-05 15:34:31

标签: python

所以..这就是我想要做的事情...... 对于数据文件中的每一行,检查另一个文件是否包含此字符串。

我从其他帖子尝试过一些东西,但是没有任何东西可以用。

下面的代码说它没有找到它正在寻找的任何字符串,即使它们出现在文件中的某个位置。

def search():
    file1= open('/home/example/file1.txt', 'r')
    datafile= open('/home/user/datafile.txt', 'r')

    for line in datafile:
        if line in file1:
            print '%s found' % line
        else:
            print '%s not found' % line

search()

2 个答案:

答案 0 :(得分:3)

假设第一个文件的内容不是非常大,您可以将整个文件作为字符串读取,然后使用字符串包含进行检查:

def search():
    file1_content = open('/home/example/file1.txt').read()
    datafile = open('/home/user/datafile.txt')

    for line in datafile:
        if line in file1_content:
            print '%s found' % line
        else:
            print '%s not found' % line

请注意open的默认模式为'r',因此,如果您正在以文字模式阅读,那么您真的不需要传递该参数。

答案 1 :(得分:0)

您可以将文件读入set,然后检查是否包含在第二个文件中。 set通常可以更快地检查列表的包含。

def search():
    file1 = set(open('/home/example/file1.txt'))
    datafile= open('/home/user/datafile.txt', 'r')

    for line in datafile:
        if line in file1:
            print '%s found' % line
        else:
            print '%s not found' % line

您还可以使用set操作来提取不在第一个文件中的所有行:

set(open('/home/user/datafile.txt', 'r')) - set(open('/home/example/file1.txt'))