【Python】讀取文本的三種方式對比


1.概述

Python有三種讀取文本的方式,分別是:

  • read()
  • readline()
  • readlines()

2.三種方式的優缺點分析

2.1 read()

最簡單的一種方法,一次性讀取文件的所有內容放入到一個大字符串中,即存在內存中。

  • 優點:
    • 方便、簡單
    • 一次性獨讀出文件放在一個大字符串中,速度最快
  • 缺點:
    • 文件過大的時候,占用內存會過大
file_object = open('test.txt') # 不要把open放在try中,以防止打開失敗,那么就不用關閉了
try:
	file_context = file_object.read() #file_context是一個string,讀取完后,就失去了對test.txt的文件引用
# file_context = open(file).read().splitlines() 
# file_context是一個list,每行文本內容是list中的一個元素
finally:
    file_object.close()
# 除了以上方法,也可用with、contextlib都可以打開文件,且自動關閉文件,
# 以防止打開的文件對象未關閉而占用內存

2.2 readline()

readline()逐行讀取文本,結果是一個list

  • 優點
    • 占用內存小,逐行讀取
  • 缺點
    • 由於是逐行讀取,速度比較慢
with open(file) as f:
    line = f.readline()
    while line:
        print line
        line = f.readline()

2.3 readlines()

readlines()一次性讀取文本的所有內容,結果是一個list

  • 優點
    • 一次性讀取文本內容,速度比較快
  • 缺點
    • 隨着文本的增大,占用內存會越來越多
with open(file) as f:
  for line in f.readlines():
     print line
# 這種方法讀取的文本內容,每行文本末尾都會帶一個'\n'換行符 (可以使用L.rstrip('\n')去掉換行符)

2.4 最簡單、最快速的逐行處理文本的方法:直接for循環文件對象

file_object = open('test.txt','rU')
try: 
    for line in file_object:
         do_somthing_with(line) # line帶"\n"
finally:
     file_object.close()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM