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

时间:2014-04-11 20:29:28

标签: string python-3.x io comparison

计算器。

我一直试图获取以下代码来创建.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")

此功能总是跳过if,好像没有" wololo"在文件内部,即使我已经一直检查它并且它在那里正确。

我不确定可能出现什么问题,而且我花了很多时间在各地寻找解决方案,但都无济于事。这个简单的代码可能有什么问题?

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

谢谢!

1 个答案:

答案 0 :(得分:3)

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

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')