分別用這三個函數讀取 myfile.txt 。 myfile.txt 中的內容是拜倫的《她以絕美之姿行來》(節選):
她以絕美之姿行來,猶如夜晚
晴空無云,繁星燦爛;
那最絕妙的光明與黑暗,
均匯聚于她的豐姿與眼底,
交織成如許溫柔光輝,
是濃艷的白晝所無緣得見。
read()
with open('myfile.txt','r') as f:
? ? poem = f.read()
? ? ?print(poem,'\n',type(poem))
打印結果:
她以絕美之姿行來,猶如夜晚 晴空無云,繁星燦爛; 那最絕妙的光明與黑暗, 均匯聚于她的豐姿與眼底, 交織成如許溫柔光輝, 是濃艷的白晝所無緣得見。
<class 'str'>
read() 函數不指定參數的話,會將文件一次性讀完,并返回一個 str ?;
如果指定參數如 read(5) 則只會讀取前 5 個字符,并返回一個 str,在讀取大文件時一般都要指定參數進行分次讀取。
readline()
with open('myfile.txt','r') as f:
? ? ?poem = f.readline()
? ? ?print(poem,'\n',type(poem))
打印結果:
她以絕美之姿行來,猶如夜晚
<class 'str'>
用法:readline()不指定參數的話一次讀取一行(即遇到換行符就停止讀取),返回一個 str 。
指定參數如 readline(5) 的話就讀取前5個字符。但與 read(5) 不同的是,如果前 5 個字符中有換行符,它只會讀取換行符前的字符(也就是只讀取一行)。
readlines()
with open('myfile.txt','r') as f:
? ? ?poem = f.readlines()
? ? ?print(poem,'\n',type(poem))
打印結果:
['她以絕美之姿行來,猶如夜晚 \n', '晴空無云,繁星燦爛; \n', '那最絕妙的光明與黑暗, \n', '均匯聚于她的豐姿與眼底, \n', '交織成如許溫柔光輝, \n', '是濃艷的白晝所無緣得見。']
<class 'list'>
用法:readlines()不指定參數的話會一次地將文件讀完,并返回一個列表。列表的第一個元素是文件的第一行,第二個元素是第二行……
?readlines()若指定參數如 readlines(5) ,并不是讀取 5 行.....如下所示
readlines(5)
打印結果:
['她以絕美之姿行來,猶如夜晚 \n']
這里的 5 是字符數量。當讀取的字符數量大于 5 時就停止讀取,否則繼續讀取下一行。這里第一行的字符數量超過了 5 個,就停止讀取了。
總結:
在讀取大文件時,使用 read(size) 逐次讀取 。
在讀取存儲 url 的文件時,使用 readlines() 剛好可以生成一個列表,方便處理。