Python的文本處理是經(jīng)常碰到的一個(gè)問(wèn)題,Python的文本文件的內(nèi)容讀取中,有三類(lèi)方法:read()、readline()、readlines(),這三種方法各有利弊,下面逐一介紹其使用方法和利弊。
read()
read()是最簡(jiǎn)單的一種方法,一次性讀取文件的所有內(nèi)容放在一個(gè)大字符串中,即存在內(nèi)存中
file_object=open('test.txt')//不要把open放在try中,以防止打開(kāi)失敗,那么就不用關(guān)閉了
try:
file_context=file_object.read()//file_context是一個(gè)string,讀取完后,就失去了對(duì)test.txt的文件引用
#file_context=open(file).read().splitlines()
//file_context是一個(gè)list,每行文本內(nèi)容是list中的一個(gè)元素
finally:
file_object.close()
//除了以上方法,也可用with、contextlib都可以打開(kāi)文件,且自動(dòng)關(guān)閉文件,
//以防止打開(kāi)的文件對(duì)象未關(guān)閉而占用內(nèi)存read()的利端:方便、簡(jiǎn)單一次性獨(dú)讀出文件放在一個(gè)大字符串中,速度最快read()的弊端:文件過(guò)大的時(shí)候,占用內(nèi)存會(huì)過(guò)大
readline():
readline()逐行讀取文本,結(jié)果是一個(gè)list
withopen(file)asf:
line=f.readline()
whileline:
printline
line=f.readline()readline()的利端:占用內(nèi)存小,逐行讀取readline()的弊端:由于是逐行讀取,速度比較慢
readlines():
readlines()一次性讀取文本的所有內(nèi)容,結(jié)果是一個(gè)list
withopen(file)asf:
forlineinf.readlines():
printline這種方法讀取的文本內(nèi)容,每行文本末尾都會(huì)帶一個(gè)'\n'換行符(可以使用L.rstrip('\n')去掉換行符)readlines()的利端:一次性讀取文本內(nèi)容,速度比較快readlines()的弊端:隨著文本的增大,占用內(nèi)存會(huì)越來(lái)越多。
最簡(jiǎn)單、最快速的逐行處理文本的方法:直接for循環(huán)文件對(duì)象
file_object=open('test.txt','rU')try:
forlineinfile_object:
do_somthing_with(line)//line帶"\n"finally:
file_object.close()
以上內(nèi)容為大家介紹了python培訓(xùn)之如何讀入數(shù)據(jù),希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。