如何解决无法使用 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 举报,一经查实,本站将立刻删除。