微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法使用 readline() 在 python 中读取多行文件

如何解决无法使用 readline() 在 python 中读取多行文件

以下代码无法正常工作。无法使用 readline() 在 python 中读取多行文件

myobject=open("myfile.txt",'r')
while ((myobject.readline())):
    print(myobject.readline())
myobject.close()

它只打印第一行然后换行。我不明白为什么?

解决方法

当您以 'r' 模式打开文件时,文件对象返回指向文件开头的位置。

每次调用 readline 时,都会读取一行,并且对象现在指向文件中的下一行

由于您的循环条件也读取文件并将其移至下一行,因此您只会在偶数位置获取行,例如第 2、4、6 行。行号、1、3、5...将被 while ((myobject.readline())): 读取并丢弃。

一个简单的解决方案是

myobject = open("myfile.txt",'r')
for line in myobject:
    print(line,end='')
myobject.close()

或者对于您的情况,当您只想使用 readline()

myobject = open("myfile.txt",'r')

while True:
    x = myobject.readline()
    if len(x) == 0:
        break
    print(x,end='')

myobject.close()

此代码有效,因为 readline 的行为方式如下。

根据 python 文档,https://docs.python.org/3/tutorial/inputoutput.html#methods-of-file-objects

f.readline() 从文件中读取一行;换行符 (\n) 留在字符串的末尾,如果文件不以换行符结尾,则仅在文件的最后一行省略。这使得返回值明确;如果 f.readline() 返回空字符串,则表示已到达文件末尾,而空行由 '\n' 表示,该字符串仅包含一个换行符。

,

这是因为 readline 一次读取一行,您的代码仍会打印一个新行,因为 readline 一直在尾随换行符。

解决方法是这样做:

with open("myfile.txt",'r') as f:
    for line in f:
        print(line)
,

readline() 返回当前指向的行并移动到下一行。因此,while 条件和print 语句中对函数的调用是不一样的。事实上,它们指向相邻的行。

首先,将该行存储在一个临时变量中,然后检查并打印。

myobject = open('myfile.txt')
while True:
    line = myobject.readline()
    if line:
        print(line)
    else:
        break

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。