read(),readline(),readlines()區別與用法
整理一下python3裡面關於read、readline、readlines的方法,有關檔案開啟模式的內容可以參見我之前的文章
檔案 runoob.txt 的內容如下:
1:www.runoob.com 2:www.runoob.com 3:www.runoob.com 4:www.runoob.com 5:www.runoob.com
1. read方法
概述
read() 方法用於從檔案讀取指定的位元組數,如果未給定或為負則讀取所有。
語法
read() 方法語法如下:
fileObject.read();
引數
size -- 從檔案中讀取的位元組數。若無size引數則預設讀取全部
返回值
返回從字串中讀取的位元組。
例項
#!/usr/bin/python # -*- coding: UTF-8 -*- # 開啟檔案 fo = open("runoob.txt", "rw+") print "檔名為: ", fo.name line = fo.read(10) print "讀取的字串: %s" % (line) # 關閉檔案 fo.close() #輸出 檔名為:runoob.txt 讀取的字串: 1:www.runo
2. readline
概述
readline() 方法用於從檔案讀取整行,包括 "\n" 字元。如果指定了一個非負數的引數,則返回指定大小的位元組數,包括 "\n" 字元。因為每次僅讀取一行,所以讀取時佔用記憶體小,比較適合大檔案,該方法返回一個字串物件。
語法
readline() 方法語法如下:
fileObject.readline();
引數
size -- 從檔案中讀取的位元組數。
返回值
返回從字串中讀取的位元組。
例項
#!/usr/bin/python # -*- coding: UTF-8 -*- # 開啟檔案 fo = open("runoob.txt", "rw+") print "檔名為: ", fo.name line = fo.readline() print "讀取第一行 %s" % (line) line = fo.readline(5) print "讀取的字串為: %s" % (line) # 關閉檔案 fo.close() #輸出 檔名為:runoob.txt 讀取第一行 1:www.runoob.com 讀取的字串為: 2:www
3. readlines
概述
readlines() 方法用於讀取所有行(直到結束符 EOF)並返回列表,每行作為一個元素,該列表可以由 Python 的 for... in ... 結構進行處理。但讀取大檔案會比較佔記憶體。
- 如果碰到結束符 EOF 則返回空字串。
語法
readlines() 方法語法如下:
fileObject.readlines( );
引數
無。
返回值
返回列表,包含所有的行。
例項
#!/usr/bin/python # -*- coding: UTF-8 -*- # 開啟檔案 fo = open("runoob.txt", "r") print "檔名為: ", fo.name for line in fo.readlines():#依次讀取每行 line = line.strip()#去掉每行頭尾空白 print "讀取的資料為: %s" % (line) # 關閉檔案 fo.close() #輸出 檔名為:runoob.txt 讀取的資料為: 1:www.runoob.com 讀取的資料為: 2:www.runoob.com 讀取的資料為: 3:www.runoob.com 讀取的資料為: 4:www.runoob.com 讀取的資料為: 5:www.runoob.com
4. linecache模組
當然,有特殊需求還可以用linecache模組,比如你要輸出某個檔案的第n行:
# 輸出第2行 text = linecache.getline(‘a.txt’,2) print text
- 處理大檔案也比較有效率