前言
讀取文件的三個方法:read()、readline()、readlines()。均可接受一個方法參數用以限制每次讀取的數據量,但通常不使用
read()
優點:讀取整個文件,將文件內容放到一個字符串變量中。
劣勢:如果文件非常大,尤其是大於內存時,無法使用read()方法。
總結:不適用於讀取大文件
簡單代碼
f = open('test/gbk.txt', 'r+', encoding='utf-8') print(f.read())
測試結果
123 456 789 @#$%
readline()
優點:readline()方法每次讀取一行;返回的是一個字符串對象,保存當前行的內存,不占用內存
缺點:比readlines慢得多
簡單代碼
# 讀取一行 f = open('test/gbk.txt', 'r+', encoding='utf-8') print("讀取一行 ====") line = f.readline() while line: # 打印當前文件指針的位置 print("文件指針:", f.tell()) print("行內容:", line) line = f.readline()
測試結果
讀取一行 ==== 文件指針: 7 行內容: tests 文件指針: 12 行內容: 123 文件指針: 17 行內容: 456 文件指針: 22 行內容: 789 文件指針: 28 行內容: 菠蘿
包含知識點
- 當你每次調用readline()方法時,你的文件指針就會指向當前行尾部,一個換行符 \n 占兩位,一個中文也是
- 讀取到最后一行之后再調用readline()就會返回空,結束循環
readlines()
特點:一次性讀取整個文件;自動將文件內容分析成一個行的列表
簡單代碼
# 讀取多行 f = open('test/gbk.txt', 'r+', encoding='utf-8', errors='ignore') print("讀取多行 ====") print(f.readlines())
測試結果
['tests\n', '123\n', '456\n', '789\n', '菠蘿']
包含知識點
- readlines()讀取所有行然后把它們作為一個字符串列表返回
- 返回的每一行內容包含換行符