为什么 "with open(file.txt)" 语句中的第二行 return 是 python 中的空字符串?
Why does the second line in "with open(file.txt)" statement return an empty string in python?
我正在学习如何在 python 中打开文本文件,我正在尝试以下代码:
from pathlib import Path
file_path = Path(r'path\to\file.txt')
with open(file_path) as file_object:
for line in file_object:
print(line)
contents = file_object.read()
print(contents)
假设 file.txt 包含三个单词,每个单词单独占一行。 for 循环正常执行并打印三行,但是一个空字符串被分配给变量“contents”,因此最后的 print 语句没有显示任何内容。
我猜当执行“with”后的第一条语句时文件被关闭了?
感谢您的帮助!
for循环后,“当前位置”在文件末尾。 .read()
调用读取文件的其余部分,这没什么(因为它已经在末尾)。该文件仍处于打开状态,所以这不是错误,只是没有更多内容可读,因为它已经全部被读取了。
如果要再次读取文件,需要调用.seek(0)
将return“当前位置”回到文件开头。
我正在学习如何在 python 中打开文本文件,我正在尝试以下代码:
from pathlib import Path
file_path = Path(r'path\to\file.txt')
with open(file_path) as file_object:
for line in file_object:
print(line)
contents = file_object.read()
print(contents)
假设 file.txt 包含三个单词,每个单词单独占一行。 for 循环正常执行并打印三行,但是一个空字符串被分配给变量“contents”,因此最后的 print 语句没有显示任何内容。
我猜当执行“with”后的第一条语句时文件被关闭了?
感谢您的帮助!
for循环后,“当前位置”在文件末尾。 .read()
调用读取文件的其余部分,这没什么(因为它已经在末尾)。该文件仍处于打开状态,所以这不是错误,只是没有更多内容可读,因为它已经全部被读取了。
如果要再次读取文件,需要调用.seek(0)
将return“当前位置”回到文件开头。