file2.txt的内容:
zalgoalpha
beta
我的代码:
file = open("file2.txt", "r", encoding = "utf-8")
print(file.read())
print(file.read().find("beta"))
为什么第二个印刷品传达“-1”(“beta”不存在),即使它在文件中,在索引11处?
答案 0 :(得分:4)
因为您已经在前一行使用了文件对象。文件指针没有任何内容可供阅读
试试这个
with open("file2.txt", "r", encoding = "utf-8") as file:
content = file.read()
print(content)
print(content.find("beta"))
这种读取文件的方式也可以防止您忘记关闭文件
答案 1 :(得分:3)
当你拨打file.read
时,它会将光标移动到文件的末尾,因此当你第二次调用它来查找“beta”时它会返回-1
您可以通过执行
来解决此问题file.seek(0)
第二次阅读文件之前。或者,将文件的内容保存到变量
中contents = file.read()
那么你可以做你以前做过的事情
print(contents)
print(contents.find("beta")
答案 2 :(得分:0)
正如Python documentation所述:
要读取文件的内容,请调用f.read(size),它读取一些数据并将其作为字符串(在文本模式下)或字节对象(在二进制模式下)返回。 size是可选的数字参数。当省略大小或为负时,将读取并返回文件的全部内容;如果文件的大小是机器内存的两倍,那么这就是你的问题。否则,最多读取并返回大小字节。如果已到达文件末尾,f.read()将返回一个空字符串('')。
这基本上意味着您只需阅读文件的内容并到达文件末尾。 你可以这样做:
with open("file2.txt", "r", encoding = "utf-8") as text_file:
text = file.read()
print(text)
print(text.find("beta"))