2014-04-11 37 views
1

stackoverflow。file.read()在字符串比较中无法正常工作

我一直在试图获得下面的代码来创建一个.txt文件,写一些字符串,然后打印一些消息,如果说该字符串在文件中。这只是一个更复杂的项目的研究,但即使它简单,它仍然无法正常工作。

代码:

import io 

file = open("C:\\Users\\...\\txt.txt", "w+") #"..." is the rest of the file destination 
file.write('wololo') 

if "wololo" in file.read(): 
    print ("ok") 

此函数总是跳过如果因为如果没有“wololo”里面的文件,即使我已经检查了所有的时间,它有正常。

我不完全确定可能是什么问题,我花了很多时间到处寻找解决方案,都无济于事。这个简单的代码有什么可能是错的?

哦,如果我要在一个更大的.txt文件中搜索字符串,使用file.read()会是明智的吗?

谢谢!

回答

3

当您写入文件时,光标将移动到文件的末尾。如果你想读取数据aferwards,你必须将光标移动到文件的开头,如:

file = open("txt.txt", "w+") 
file.write('wololo') 

file.seek(0) 
if "wololo" in file.read(): 
    print ("ok") 
file.close() # Remember to close the file 

如果该文件是大,你应该考虑遍历由文件行行代替。这将避免整个文件存储在内存中。还要考虑使用上下文管理器(关键字with),以便您不必亲自显式关闭文件。

with open('bigdata.txt', 'rb') as ifile: # Use rb mode in Windows for reading 
    for line in ifile: 
     if 'wololo' in line: 
      print('OK') 
    else: 
     print('String not in file')