如何检查python列表是否包含我刚刚插入的元素

时间:2015-12-28 13:43:55

标签: python

我想用python编写一个txt文件,这个文件包含很多元素,应该不断更新。我应该在插入之前检查它是否包含元素。问题出在这里:

f = open('test.txt', 'a+')
content = list(f)
f.write('905771\n')
if '905771\n' in content:
    print 'ok'
else:
    print 'no'
f.close()

它将返回' no'但是我插入它,该元素可能在缓冲池中。如果我在f.write('905771\n')之后立即关闭文件,则此程序中会有许多openclose,因为有许多元素。那么如何检查列表是否包含我刚刚插入的元素?非常感谢。

3 个答案:

答案 0 :(得分:1)

您可能想要切换这两行:

content = list(f)
f.write('905771\n')

否则,在插入新元素之前,您正在阅读检查文件内容。

答案 1 :(得分:0)

那是因为您将数据(905771 \ n)写入文件f但未更新列表content

f = open('test.txt', 'a+')
content = list(f)
f.write('905771\n')
content.append('905771\n')   #add data to content to update list
if '905771\n' in content:
    print 'ok'
else:
    print 'no'
f.close()

或者像andreas-hofmann所述,您可以先写入文件f,然后创建列表content并进行检查:

f = open('test.txt', 'a+')
f.write('905771\n')
content = list(f)
if '905771\n' in content:
    print 'ok'
else:
    print 'no'
f.close()

答案 2 :(得分:0)

with open("filename.txt", "r") as f:
    alldata = f.read()

if "searchPhrase" in alldata:
    print("Ok")
else:
    print("no")

只需将其红色并检查searchPhrase是否在文件中。