【问题标题】:Why does the second line in "with open(file.txt)" statement return an empty string in python? [duplicate]为什么“with open(file.txt)”语句的第二行在python中返回一个空字符串? [复制]
【发布时间】:2020-08-25 12:41:46
【问题描述】:

我正在学习如何在 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”之后的第一条语句时文件关闭了?

感谢您的帮助!

【问题讨论】:

    标签: python python-3.x with-statement


    【解决方案1】:

    在 for 循环之后,“当前位置”位于文件末尾。 .read() 调用读取文件的其余部分,这没什么(因为它已经在末尾了)。该文件仍处于打开状态,因此这不是错误,只是没有更多可读取的内容,因为它已经全部读取了。

    如果要再次读取文件,需要调用.seek(0)将“当前位置”返回到文件开头。

    【讨论】:

    • 感谢您的回答。我找不到类似的问题,因为我没有意识到代码确实在文件上“迭代”。关键字很棘手...
    猜你喜欢
    • 2013-04-09
    • 1970-01-01
    • 1970-01-01
    • 2012-03-15
    • 2017-07-28
    • 1970-01-01
    • 1970-01-01
    • 2015-07-24
    相关资源
    最近更新 更多