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