所以..这就是我想要做的事情...... 对于数据文件中的每一行,检查另一个文件是否包含此字符串。
我从其他帖子尝试过一些东西,但是没有任何东西可以用。
下面的代码说它没有找到它正在寻找的任何字符串,即使它们出现在文件中的某个位置。
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()
答案 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'))