为什么在这种情况下find()方法不起作用?

12 浏览
0 Comments

为什么在这种情况下find()方法不起作用?

file2.txt文件的内容:

zalgoalpha
beta

我的代码:

file = open("file2.txt", "r", encoding = "utf-8")
print(file.read())
print(file.read().find("beta"))

为什么第二个打印输出结果是"-1"("beta"不存在),即使它在文件中的索引11处存在?

0
0 Comments

为什么在这种情况下find()方法不起作用?

因为在前一行中你已经消耗了文件对象。文件指针没有剩余的内容可以读取。

尝试这样做:

with open("file2.txt", "r", encoding = "utf-8") as file:
    content = file.read()
    print(content) 
    print(content.find("beta"))

这种读取文件的方式还可以防止忘记关闭文件。

只是补充一点信息:_007推荐打开文件的方式使用了上下文管理语句with。你可以在这里了解更多关于with和上下文管理器的信息:这里

0
0 Comments

问题出现的原因是文件已经读取到了末尾,因此无法继续使用find()方法进行查找。解决方法是在使用find()方法之前,先读取文件的内容,并将其存储在一个变量中,然后再使用find()方法进行查找。以下是解决方法的代码示例:

with open("file2.txt", "r", encoding = "utf-8") as text_file:
    text = file.read()
    print(text)
    print(text.find("beta"))

以上代码首先打开名为"file2.txt"的文件,指定以utf-8编码进行读取。然后使用read()方法读取文件的全部内容,并将其存储在变量text中。接下来,使用find()方法在text中查找字符串"beta",并将结果打印输出。这样就可以避免在文件末尾使用find()方法导致的错误。

0
0 Comments

在这种情况下,find()方法为什么不起作用?

当调用file.read()时,它会将光标移动到文件末尾,因此当第二次调用它来查找"beta"时,它会返回-1。

你可以通过在第二次读取文件之前使用file.seek(0)来修复这个问题。另外,可以将文件的内容保存到一个变量中,然后可以像之前一样操作。

以下是解决方法的代码示例:

file.seek(0)

或者将文件的内容保存到一个变量中:

contents = file.read()

然后你可以像之前一样操作:

print(contents)
print(contents.find("beta"))

通过以上方法,你就可以正确地使用find()方法来查找指定的字符串了。

0