前言
眾所周知在python中讀取文件常用的三種方法:read(),readline(),readlines(),今天看項(xiàng)目是又忘記他們的區(qū)別了。以前看書的時(shí)候覺(jué)得這東西很簡(jiǎn)單,一眼掃過(guò),待到用時(shí)卻也只知道有這么幾個(gè)方法,不懂得它的原理與用法。也許吧,沒(méi)有永遠(yuǎn)的記憶,況且根本沒(méi)有用心去記它。話不多說(shuō),來(lái)一起看看詳細(xì)的介紹:
準(zhǔn)備
假設(shè)a.txt的內(nèi)容如下所示:
HelloWelcomeWhat is the fuck...
一、read([size])方法
read([size])方法從文件當(dāng)前位置起讀取size個(gè)字節(jié),若無(wú)參數(shù)size,則表示讀取至文件結(jié)束為止,它范圍為字符串對(duì)象
f = open("a.txt")lines = f.read()print linesprint(type(lines))f.close()輸出結(jié)果:
HelloWelcomeWhat is the fuck...<type 'str'> #字符串類型
二、readline()方法
從字面意思可以看出,該方法每次讀出一行內(nèi)容,所以,讀取時(shí)占用內(nèi)存小,比較適合大文件,該方法返回一個(gè)字符串對(duì)象。
f = open("a.txt")line = f.readline()print(type(line))while line: print line, line = f.readline()f.close()輸出結(jié)果:
<type 'str'>HelloWelcomeWhat is the fuck...
三、readlines()方法讀取整個(gè)文件所有行,保存在一個(gè)列表(list)變量中,每行作為一個(gè)元素,但讀取大文件會(huì)比較占內(nèi)存。
f = open("a.txt")lines = f.readlines()print(type(lines))for line in lines: print line,f.close()輸出結(jié)果:
<type 'list'>HelloWelcomeWhat is the fuck...
四、linecache模塊
當(dāng)然,有特殊需求還可以用linecache模塊,比如你要輸出某個(gè)文件的第n行:
# 輸出第2行text = linecache.getline(‘a(chǎn).txt',2)print text,
對(duì)于大文件效率還可以。
下面是其他網(wǎng)友的補(bǔ)充
"""1、讀取文件的三個(gè)方法:read()、readline()、readlines()2、三個(gè)方法均可接受一個(gè)變量用以限制每次讀取的數(shù)據(jù)量,通常不使用該變量。""""""關(guān)于read()方法:1、讀取整個(gè)文件,將文件內(nèi)容放到一個(gè)字符串變量中2、如果文件大于可用內(nèi)存,不可能使用這種處理"""file_object = open("test.py",'r') #創(chuàng)建一個(gè)文件對(duì)象,也是一個(gè)可迭代對(duì)象try: all_the_text = file_object.read() #結(jié)果為str類型 print type(all_the_text) print "all_the_text=",all_the_textfinally: file_object.close()"""關(guān)于readline()方法:1、readline()每次讀取一行,比readlines()慢得多2、readline()返回的是一個(gè)字符串對(duì)象,保存當(dāng)前行的內(nèi)容"""file_object1 = open("test.py",'r')try: while True: line = file_object1.readline() if line: print "line=",line else: breakfinally: file_object1.close()"""關(guān)于readlines()方法:1、一次性讀取整個(gè)文件。2、自動(dòng)將文件內(nèi)容分析成一個(gè)行的列表。"""file_object2 = open("test.py",'r')try: lines = file_object2.readlines() print "type(lines)=",type(lines) #type(lines)= <type 'list'> for line in lines: print "line=",line finally: file_object2.close()
新聞熱點(diǎn)
疑難解答
圖片精選