摘要:文件的內(nèi)置函數(shù)這么多內(nèi)置函數(shù),不會(huì)都講述,只能撿著重點(diǎn)的來(lái)實(shí)驗(yàn)了。對(duì)付大點(diǎn)的文件,還是推薦這么做以上都是讀文件的內(nèi)置函數(shù)和方法。
在前面學(xué)習(xí)了基本的打開(kāi)和建立文件之后,就可以對(duì)文件進(jìn)行多種多樣的操作了。請(qǐng)看官要注意,文件,不是什么特別的東西,就是一個(gè)對(duì)象,如同對(duì)待此前學(xué)習(xí)過(guò)的字符串、列表等一樣。
文件的屬性所謂屬性,就是能夠通過(guò)一個(gè)文件對(duì)象得到的東西。
>>> f = open("131.txt","a") >>> f.name "131.txt" >>> f.mode #顯示當(dāng)前文件打開(kāi)的模式 "a" >>> f.closed #文件是否關(guān)閉,如果關(guān)閉,返回True;如果打開(kāi),返回False False >>> f.close() #關(guān)閉文件的內(nèi)置函數(shù) >>> f.closed True文件的有關(guān)狀態(tài)
很多時(shí)候,我們需要獲取一個(gè)文件的有關(guān)狀態(tài)(有時(shí)候成為屬性,但是這里的文件屬性和上面的文件屬性是不一樣的,可是,我覺(jué)得稱之為文件狀態(tài)更好一點(diǎn)),比如創(chuàng)建日期,訪問(wèn)日期,修改日期,大小,等等。在os模塊中,有這樣一個(gè)方法,能夠解決此問(wèn)題:
>>> import os >>> file_stat = os.stat("131.txt") #查看這個(gè)文件的狀態(tài) >>> file_stat #文件狀態(tài)是這樣的。從下面的內(nèi)容,有不少?gòu)挠⑽膯卧~中可以猜測(cè)出來(lái)。 posix.stat_result(st_mode=33204, st_ino=5772566L, st_dev=2049L, st_nlink=1, st_uid=1000, st_gid=1000, st_size=69L, st_atime=1407897031, st_mtime=1407734600, st_ctime=1407734600) >>> file_stat.st_ctime #這個(gè)是文件創(chuàng)建時(shí)間 1407734600.0882277 #換一種方式查看這個(gè)時(shí)間 >>> import time >>> time.localtime(file_stat.st_ctime) #這回看清楚了。 time.struct_time(tm_year=2014, tm_mon=8, tm_mday=11, tm_hour=13, tm_min=23, tm_sec=20, tm_wday=0, tm_yday=223, tm_isdst=0)
以上關(guān)于文件狀態(tài)和文件屬性的內(nèi)容,在對(duì)文件的某些方面進(jìn)行判斷和操作的時(shí)候或許會(huì)用到。特別是文件屬性。比如在操作文件的時(shí)候,我們經(jīng)常要首先判斷這個(gè)文件是否已經(jīng)關(guān)閉或者打開(kāi),就需要用到file.closed這個(gè)屬性來(lái)判斷了。
文件的內(nèi)置函數(shù)>>> dir(file) ["__class__", "__delattr__", "__doc__", "__enter__", "__exit__", "__format__", "__getattribute__", "__hash__", "__init__", "__iter__", "__new__", "__reduce__", "__reduce_ex__", "__repr__", "__setattr__", "__sizeof__", "__str__", "__subclasshook__", "close", "closed", "encoding", "errors", "fileno", "flush", "isatty", "mode", "name", "newlines", "next", "read", "readinto", "readline", "readlines", "seek", "softspace", "tell", "truncate", "write", "writelines", "xreadlines"] >>>
這么多內(nèi)置函數(shù),不會(huì)都講述,只能撿著重點(diǎn)的來(lái)實(shí)驗(yàn)了。
>>> f = open("131.txt","r") >>> f.read() "My name is qiwsir. My website is qiwsir.github.io Aha,I like program " >>>
file.read()能夠?qū)⑽募械膬?nèi)容全部讀取過(guò)來(lái)。特別注意,這是返回一個(gè)字符串,而且是將文件中的內(nèi)容全部讀到內(nèi)存中。試想,如果內(nèi)容太多是不是就有點(diǎn)慘了呢?的確是,千萬(wàn)不要去讀大個(gè)的文件。
>>> contant = f.read() >>> type(contant)
如果文件比較大了,就不要一次都讀過(guò)來(lái),可以轉(zhuǎn)而一行一行地,用readline
>>> f = open("131.txt","r") >>> f.readline() #每次返回一行,然后指針向下移動(dòng) "My name is qiwsir. " >>> f.readline() #再讀,再返回一行 "My website is qiwsir.github.io " >>> f.readline() "Aha,I like program " >>> f.readline() #已經(jīng)到最后一行了,再讀,不報(bào)錯(cuò),返回空 ""
這個(gè)方法,看官是不是覺(jué)得太慢了呢?有沒(méi)有痛快點(diǎn)的呢?有,請(qǐng)揮刀自宮,不用自宮,也能用readlines。注意區(qū)別,這個(gè)是復(fù)數(shù),言外之意就是多行啦。
>>> f = open("131.txt","r") >>> cont = f.readlines() >>> cont ["My name is qiwsir. ", "My website is qiwsir.github.io ", "Aha,I like program "] >>> type(cont)>>> for line in cont: ... print line ... My name is qiwsir. My website is qiwsir.github.io Aha,I like program
從實(shí)驗(yàn)中我們可以看到,readlines和read有一樣之處,都是將文件內(nèi)容一次性讀出來(lái),存放在內(nèi)存,但是兩者也有區(qū)別,read返回的是str類型,readlines返回的是list,而且一行一個(gè)元素,因此,就可以通過(guò)for逐行打印出來(lái)了。
在print line中,注意觀察list里面的每個(gè)元素,最后都是一個(gè) 結(jié)尾,所以打印的結(jié)果會(huì)有空行。其原因前面已經(jīng)介紹過(guò)了,忘了的朋友請(qǐng)回滾到上一講
不過(guò),還是要提醒列位,太大的文件不用都讀到內(nèi)存中。對(duì)付大點(diǎn)的文件,還是推薦這么做:
>>> f = open("131.txt","r") >>> f>>> type(f) >>> for line in f: ... print line ... My name is qiwsir. My website is qiwsir.github.io Aha,I like program
以上都是讀文件的內(nèi)置函數(shù)和方法。除了讀,就是要寫(xiě)。所謂寫(xiě),就是將內(nèi)容存入到文件中。用到的內(nèi)置函數(shù)是write。但是,要寫(xiě)入文件,還要注意打開(kāi)文件的模式,可以是w,也可以是a,看具體情況而定。
>>> f = open("131.txt","a") #因?yàn)檫@個(gè)文件已經(jīng)存在,我又不想清空,用追加的模式 >>> f.write("There is a baby.") #這句話應(yīng)該放到文件最后 >>> f.close() #請(qǐng)看官注意,寫(xiě)了之后,一定要及時(shí)關(guān)閉文件。才能代表真正寫(xiě)入
看看寫(xiě)的效果:
>>> f = open("131.txt","r") >>> for line in f.readlines(): ... print line ... My name is qiwsir. My website is qiwsir.github.io Aha,I like program There is a baby. #果然增加了這一行
以上是關(guān)于文件的基本操作。其實(shí)對(duì)文件遠(yuǎn)遠(yuǎn)不知這些,有興趣的看官可以google一下pickle這個(gè)模塊,是一個(gè)很好用的東西。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/37358.html
摘要:如文件存在,則清空該文件,再寫(xiě)入新內(nèi)容以追加模式打開(kāi)文件即一打開(kāi)文件,文件指針自動(dòng)移到文件末尾,如果文件不存在則創(chuàng)建以讀寫(xiě)方式打開(kāi)文件,可對(duì)文件進(jìn)行讀和寫(xiě)操作。以讀寫(xiě)方式打開(kāi)文件,并把文件指針移到文件尾。 這兩天身體不給力,拖欠了每天發(fā)講座的約定,看官見(jiàn)諒。 紅頭文件,是某國(guó)特別色的東西,在python里不需要,python里要處理的是計(jì)算機(jī)中的文件,包括文本的、圖片的、音頻的、視頻...
摘要:函數(shù)的基本結(jié)構(gòu)中的函數(shù)基本結(jié)構(gòu)函數(shù)名參數(shù)列表語(yǔ)句幾點(diǎn)說(shuō)明函數(shù)名的命名規(guī)則要符合中的命名要求。在中,將這種依賴關(guān)系,稱之為多態(tài)。不要期待在原處修改的函數(shù)會(huì)返回結(jié)果比如一定要之用括號(hào)調(diào)用函數(shù)不要在導(dǎo)入和重載中使用擴(kuò)展名或路徑。 在本教程的開(kāi)始部分,就已經(jīng)引入了函數(shù)的概念:《永遠(yuǎn)強(qiáng)大的函數(shù)》,之所以那時(shí)候就提到函數(shù),是因?yàn)槲矣X(jué)得函數(shù)之重要,遠(yuǎn)遠(yuǎn)超過(guò)一般。這里,重回函數(shù),一是復(fù)習(xí),二是要在已經(jīng)...
摘要:你只需要相信一句話鍵盤敲爛,月薪過(guò)萬(wàn)就行了,進(jìn)入正文,零基礎(chǔ)入門知識(shí)點(diǎn)大綱如下其實(shí)到目前為止,的崗位需求還是非常多的,還是大多數(shù)企業(yè)后臺(tái)開(kāi)發(fā)的主流編程語(yǔ)言,功能強(qiáng)大,還是很值得學(xué)習(xí)的。 ...
摘要:關(guān)于函數(shù)的事情,總是說(shuō)不完的,下面就羅列一些編寫(xiě)函數(shù)的注意事項(xiàng)。函數(shù)具有獨(dú)立性。也就是常說(shuō)的不要有太強(qiáng)的耦合性。要讓函數(shù)能夠獨(dú)立于外部的東西。函數(shù)實(shí)現(xiàn)的功能和目標(biāo)要單一化。這跟前面的道理是一樣的,目的是降低耦合性。 關(guān)于函數(shù)的事情,總是說(shuō)不完的,下面就羅列一些編寫(xiě)函數(shù)的注意事項(xiàng)。特別聲明,這些事項(xiàng)不是我總結(jié)的,我是從一本名字為《Learning Python》的書(shū)里面抄過(guò)來(lái)的,順便寫(xiě)成...
摘要:語(yǔ)句,遍列列表字符串字典集合等迭代器,依次處理迭代器中的每個(gè)元素。與配合使用處理在程序運(yùn)行中出現(xiàn)的異常情況。表示此行為空,不運(yùn)行任何操作。在迭代器函數(shù)內(nèi)使用,用于返回一個(gè)元素。恭請(qǐng)到上瀏覽及時(shí)更新的教程零基礎(chǔ)學(xué) 小孩子剛剛開(kāi)始學(xué)說(shuō)話的時(shí)候,常常是一個(gè)字一個(gè)字地開(kāi)始學(xué),比如學(xué)說(shuō)餃子,對(duì)他/她來(lái)講,似乎有點(diǎn)難度,大人也聰明,于是就簡(jiǎn)化了,用餃餃來(lái)代替,其實(shí)就是讓孩子學(xué)會(huì)一個(gè)字就能表達(dá)。當(dāng)然...
閱讀 1420·2021-11-24 10:20
閱讀 3662·2021-11-24 09:38
閱讀 2307·2021-09-27 13:37
閱讀 2211·2021-09-22 15:25
閱讀 2283·2021-09-01 18:33
閱讀 3501·2019-08-30 15:55
閱讀 1795·2019-08-30 15:54
閱讀 2100·2019-08-30 12:50