python中有三種函數,用來幫我們實現文件的讀取,這三種函數分別是read、readline和readlines
1. read
read函數的作用是讀取文件全部內容,逐個字節或者字符讀取(指針從開頭的位置到結尾的位置),讀取的得到的是字符串對象,以可讀(r, r+, rb, rb+)模式打開文件
如果文件是二進制模式,那么read是逐個字節讀取,而如果是非二進制模式,那么是以字符串逐個讀取
with open("test2.txt", "w", encoding="utf-8") as f: f.writelines(["關關雎鳩\n", "在河之洲\n", "窈窕淑女\n", "君子好逑\n"]) # read函數 with open("test2.txt", "r", encoding="utf-8") as f: file = f.read() print(type(file)) # <class 'str'> print(file.strip()) # 文件的 讀取,我們都習慣要取出文件前面的空格 """ 關關雎鳩 在河之洲 窈窕淑女 君子好逑 """
read函數中還有可選參數size,用於指定一次最多可讀取的字符串的個數,如果省略,那么一次性讀取全部內容,如果指定的數字大於文件內全部的字符或者字節數,它也不會報錯,他會全部讀取里面的內容
with open("test2.txt", "r", encoding="utf-8") as f: file = f.read(10) print(type(file)) # <class 'str'> print(file.strip()) # 文件的 讀取,我們都習慣要取出文件前面的空格 """ 關關雎鳩 在河之洲 """
with open("test2.txt", "r", encoding="utf-8") as f: file = f.read(100) print(type(file)) # <class 'str'> print(file.strip()) # 文件的 讀取,我們都習慣要取出文件前面的空格 """ 關關雎鳩 在河之洲 窈窕淑女 君子好逑 """
2.readline
readline函數用於讀取文件的一行,每次讀出一行內容,所以讀取占用內存小,適合大文件的讀取,讀取得到的對象是字符串對象
with open("test2.txt", "r", encoding="utf-8") as f: line = f.readline() print(type(line)) # <class 'str'> print(line) # 關關雎鳩
# 如果想要讀取里面的全部內容,結合while循環 with open("test2.txt", "r", encoding="utf-8") as f: line = f.readline() while line: print(line) line = f.readline()
"""
關關雎鳩
在河之洲
窈窕淑女
君子好逑
"""
3.readlines
一次性讀取全部內容,讀取得到的文件內容是列表對象,讀取大文件的時候不推薦使用這種方法
# readlines函數 with open("test2.txt", "r", encoding="utf-8") as f: lines = f.readlines() print(type(lines)) # <class 'list'> for i, line in enumerate(lines, 1): print("第{}行:{}".format(i, line))
第1行:關關雎鳩
第2行:在河之洲
第3行:窈窕淑女
第4行:君子好逑