Python中read()、readline()、readlines()之間的區別
阿新 • • 發佈:2018-12-19
1、read([size])
read([size]):
從檔案當前位置起讀取size個位元組,若無引數,則預設讀取整個檔案。
返回值:一個str物件(將整個讀取的位元組拼接成一個字串,包括換行符、製表符)。
with open(‘file.txt’, 'r', encoding='utf-8') as f:
lines = f.read()
print(lines)
上面程式碼讀中lines
為字串,有時我們需要的是將檔案中每行的內容作為一個元素儲存在列表中,這時可以使用字串內建函式.splitlines()
,對字串進行分割。
with open(‘file.txt’, 'r', encoding='utf-8') as f: lines = f.read().splitelines() print(lines)
2、readlines()
readlines():
讀取整個檔案並儲存在一個列表中,檔案中的每一行作為列表中的一個元素(包括‘\n’、‘\t’)。
返回值: list物件
由於讀取檔案時保留了每行結尾的換行符,可以使用strip()
函式來去除每個元素的開頭和結尾的空格。
with open('file.txr', 'r',) as f:
lines = f.readlines()
lines = [line.strip() for line in lines if len(line.strip())]
print(lines)
3、readline([size])
readline():
每次從檔案中讀取一行包括'\n'
字元。如果size
指定了一個非負數的引數,則返回指定大小的位元組數,包括 “\n” 字元。
with open(r'E:\文字分析\dataSet\12.text', 'r', encoding='utf-8') as f:
while True:
line = f.readline()
if line:
print(line)
else:
break
注意: 當檔案過大時,採用read()
和readlines()
讀取時會佔用過多記憶體,甚至檔案大於可用記憶體時,讀取會出現異常。此時可使用readline()
來讀取,但該方法讀取檔案時間要大於前兩種。
檔案讀取的最優方法
with open('file.txt', 'r') as f:
for line in f:
do_things(f)
使用open()
函式建立的檔案物件是一個迭代器,因此可以使用for
語句進行遍歷,每次讀取檔案的一行(包括’\n’)。
這種方法是文字檔案讀取的最佳選擇,它簡單、且對任意大小的檔案都有效,因為他不會一次性把整個檔案都載入到記憶體中。