爱学习,爱生活,会学习,会生活,人生有百学网更精彩!
爱学习 | 爱生活

如何在 Python 中读取大文本文件

发布于:百学网 2022-03-23

如何在 Python 中读取大文本文件

  Python 是一种开源的动态类型和解释型编程语言。读写文件是编程的一个组成部分。在 Python 中,使用 readlines() 方法读取文件。readlines() 方法返回一个列表,其中列表中的每一项都是文件中的一个完整句子。当文件较小时,此方法很有用。由于 readlines() 方法将每一行附加到列表中,然后返回整个列表,如果文件大小非常大,比如以 GB 为单位,这将非常耗时。此外,该列表将消耗大量内存,如果没有足够的内存,可能会导致内存泄漏。为了避免这个问题,我们可以使用文件对象作为迭代器来迭代文件并执行所需的任务。由于迭代器只是对整个文件进行迭代,不需要任何额外的数据结构来存储数据,因此消耗的内存相对较少。此外,迭代器不会执行像追加这样的昂贵操作,因此它也很省时。文件在 Python 中是可迭代的,因此建议使用迭代器。

  以下两个程序演示了如何使用 Python 读取大型文本文件。

  方法一:

  第一种方法使用迭代器来迭代文件。在这项技术中,我们使用 Python 中的 fileinput 模块。fileinput 模块的 input() 方法可用于读取文件。使用此方法优于 readlines() 的优点是 fileinput.input() 不会将整个文件加载到内存中。因此,没有内存泄漏的可能性。fileinput.input() 方法接受一个文件名列表,如果没有传递参数,它接受来自标准输入的输入。该方法返回一个迭代器,该迭代器返回正在扫描的文本文件中的各个行。

  # import module

  import fileinput

  import time

  #time at the start of program is noted

  start = time.time()

  #keeps a track of number of lines in the file

  count = 0

  for lines in fileinput.input(['sample.txt']):

  print(lines)

  count = count + 1

  #time at the end of program execution is noted

  end = time.time()

  #total time taken to print the file

  print("Execution time in seconds: ",(end - start))

  print("No. of lines printed: ",count)

  解释:

  input() 方法返回一个迭代器,它扫描整个文件并打印每一行。

  方法二:

  第二种方法也使用迭代器来读取文件。唯一的区别是我们将使用文件对象的迭代器。使用的方法是 open() 将整个文件包装成一个文件对象。接下来,我们使用迭代器来获取文件对象中的行。我们在“with”块中打开文件,因为它会在整个块执行后自动关闭文件。随着 with 块完成,exit() 方法被调用,该方法释放所有打开的资源。

  import time

  start = time.time()

  count = 0

  with open("sample.txt") as file:

  for line in file:

  print(line)

  count = count + 1

  end = time.time()

  print("Execution time in seconds: ",(end-start))

  print("No of lines printed: ",count)

  这种方法所需的时间相对较少。该程序也可以在没有块的情况下编写,但在这种情况下,我们必须确保明确关闭文件资源。

本站(www.100xue.net)部分图文转自网络,刊登本文仅为传播信息之用,绝不代表赞同其观点或担保其真实性。若有来源标注错误或侵犯了您的合法权益,请作者持权属证明与本网联系(底部邮箱),我们将及时更正、删除,谢谢

- END -
  • 相关文章