我想用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')
之后立即关闭文件,则此程序中会有许多open
和close
,因为有许多元素。那么如何检查列表是否包含我刚刚插入的元素?非常感谢。
答案 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是否在文件中。