【问题标题】:Python. ".readline", ".readlines" methods issue. How does it workPython。 “.readline”、“.readlines”方法问题。它是如何工作的
【发布时间】:2021-09-28 05:51:58
【问题描述】:

不明白(在 Coursers 上传递任务)第二个代码如何读取文件内容。没有 ".readline"".readlines" 方法。 第一个跑不了。 任务(文件包含单词行数,需要统计单词数)

#the first
file = open('/Users/max/Desktop/education/Test_record.csv', 'r')
num_words = 0
for lines in file.readlines():
    line = file.split()
    num_words += len(line)
print(num_words)
#file.close()


#the second (runs well)
num_words = 0
fileref = "/Users/max/Desktop/education/Test_record.csv"
with open(fileref, 'r') as file:
    for line in file:
        num_words += len(line.split())
print(num_words)
#file.close()

【问题讨论】:

  • 欢迎来到 Stack Overflow。在这里查看这篇关于提出好问题的文章:stackoverflow.com/help/how-to-ask 如果不分享任何实际代码,我们几乎不可能为您提供帮助
  • for循环为什么要缩进?
  • 你应该做的是lines.split()在第一个。
  • 为什么?我在循环迭代行时这样做

标签: python methods


【解决方案1】:

您的第一个示例可以工作,它只包含一个错误,因为您定义了一个lines 变量然后尝试在file 上调用split,而不是在lines 上。然而它有点多余,因为你首先读取内存中的所有行,然后遍历它们。

第二个示例是完成这项工作的标准方法:您在读取文件行时迭代它们。

【讨论】:

  • 我理解我的错误,尝试拆分文件,但必须使用行进行该操作,line = file.split()-----> line_s = line.split() 但还是不要'不明白第二个代码是如何读取文件的,没有读取方法
  • 这是文件对象的内置功能。来自 Python 教程:“为了从文件中读取行,您可以遍历文件对象。这是内存效率高、速度快且代码简单的方法”。 readline() 方法在您想要更多控制时很有用,可能读取单行或其他任何内容,但对于简单地循环所有行,文件对象的迭代器功能是最佳选择。 readlines() 也有它的用途,尽管由于它将所有内容都放在内存中,因此在处理大文件时必须小心使用
  • 有两种方法可以做到这一点,因为readlines() 是 Python 1 中的原始方法,在可以迭代文件之前。文件对象在 Python 2 中变得可迭代。
  • gimix,BoarGules 非常感谢你们的解释
猜你喜欢
  • 1970-01-01
  • 2011-09-08
  • 1970-01-01
  • 2014-07-04
  • 2019-05-23
  • 2022-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多