摘要:文件的內置函數這么多內置函數,不會都講述,只能撿著重點的來實驗了。對付大點的文件,還是推薦這么做以上都是讀文件的內置函數和方法。
在前面學習了基本的打開和建立文件之后,就可以對文件進行多種多樣的操作了。請看官要注意,文件,不是什么特別的東西,就是一個對象,如同對待此前學習過的字符串、列表等一樣。
文件的屬性所謂屬性,就是能夠通過一個文件對象得到的東西。
>>> f = open("131.txt","a") >>> f.name "131.txt" >>> f.mode #顯示當前文件打開的模式 "a" >>> f.closed #文件是否關閉,如果關閉,返回True;如果打開,返回False False >>> f.close() #關閉文件的內置函數 >>> f.closed True文件的有關狀態
很多時候,我們需要獲取一個文件的有關狀態(有時候成為屬性,但是這里的文件屬性和上面的文件屬性是不一樣的,可是,我覺得稱之為文件狀態更好一點),比如創建日期,訪問日期,修改日期,大小,等等。在os模塊中,有這樣一個方法,能夠解決此問題:
>>> import os >>> file_stat = os.stat("131.txt") #查看這個文件的狀態 >>> file_stat #文件狀態是這樣的。從下面的內容,有不少從英文單詞中可以猜測出來。 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 #這個是文件創建時間 1407734600.0882277 #換一種方式查看這個時間 >>> 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)
以上關于文件狀態和文件屬性的內容,在對文件的某些方面進行判斷和操作的時候或許會用到。特別是文件屬性。比如在操作文件的時候,我們經常要首先判斷這個文件是否已經關閉或者打開,就需要用到file.closed這個屬性來判斷了。
文件的內置函數>>> 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"] >>>
這么多內置函數,不會都講述,只能撿著重點的來實驗了。
>>> f = open("131.txt","r") >>> f.read() "My name is qiwsir. My website is qiwsir.github.io Aha,I like program " >>>
file.read()能夠將文件中的內容全部讀取過來。特別注意,這是返回一個字符串,而且是將文件中的內容全部讀到內存中。試想,如果內容太多是不是就有點慘了呢?的確是,千萬不要去讀大個的文件。
>>> contant = f.read() >>> type(contant)
如果文件比較大了,就不要一次都讀過來,可以轉而一行一行地,用readline
>>> f = open("131.txt","r") >>> f.readline() #每次返回一行,然后指針向下移動 "My name is qiwsir. " >>> f.readline() #再讀,再返回一行 "My website is qiwsir.github.io " >>> f.readline() "Aha,I like program " >>> f.readline() #已經到最后一行了,再讀,不報錯,返回空 ""
這個方法,看官是不是覺得太慢了呢?有沒有痛快點的呢?有,請揮刀自宮,不用自宮,也能用readlines。注意區別,這個是復數,言外之意就是多行啦。
>>> 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
從實驗中我們可以看到,readlines和read有一樣之處,都是將文件內容一次性讀出來,存放在內存,但是兩者也有區別,read返回的是str類型,readlines返回的是list,而且一行一個元素,因此,就可以通過for逐行打印出來了。
在print line中,注意觀察list里面的每個元素,最后都是一個 結尾,所以打印的結果會有空行。其原因前面已經介紹過了,忘了的朋友請回滾到上一講
不過,還是要提醒列位,太大的文件不用都讀到內存中。對付大點的文件,還是推薦這么做:
>>> 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
以上都是讀文件的內置函數和方法。除了讀,就是要寫。所謂寫,就是將內容存入到文件中。用到的內置函數是write。但是,要寫入文件,還要注意打開文件的模式,可以是w,也可以是a,看具體情況而定。
>>> f = open("131.txt","a") #因為這個文件已經存在,我又不想清空,用追加的模式 >>> f.write("There is a baby.") #這句話應該放到文件最后 >>> f.close() #請看官注意,寫了之后,一定要及時關閉文件。才能代表真正寫入
看看寫的效果:
>>> 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. #果然增加了這一行
以上是關于文件的基本操作。其實對文件遠遠不知這些,有興趣的看官可以google一下pickle這個模塊,是一個很好用的東西。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/37358.html
摘要:如文件存在,則清空該文件,再寫入新內容以追加模式打開文件即一打開文件,文件指針自動移到文件末尾,如果文件不存在則創建以讀寫方式打開文件,可對文件進行讀和寫操作。以讀寫方式打開文件,并把文件指針移到文件尾。 這兩天身體不給力,拖欠了每天發講座的約定,看官見諒。 紅頭文件,是某國特別色的東西,在python里不需要,python里要處理的是計算機中的文件,包括文本的、圖片的、音頻的、視頻...
摘要:函數的基本結構中的函數基本結構函數名參數列表語句幾點說明函數名的命名規則要符合中的命名要求。在中,將這種依賴關系,稱之為多態。不要期待在原處修改的函數會返回結果比如一定要之用括號調用函數不要在導入和重載中使用擴展名或路徑。 在本教程的開始部分,就已經引入了函數的概念:《永遠強大的函數》,之所以那時候就提到函數,是因為我覺得函數之重要,遠遠超過一般。這里,重回函數,一是復習,二是要在已經...
摘要:你只需要相信一句話鍵盤敲爛,月薪過萬就行了,進入正文,零基礎入門知識點大綱如下其實到目前為止,的崗位需求還是非常多的,還是大多數企業后臺開發的主流編程語言,功能強大,還是很值得學習的。 ...
摘要:關于函數的事情,總是說不完的,下面就羅列一些編寫函數的注意事項。函數具有獨立性。也就是常說的不要有太強的耦合性。要讓函數能夠獨立于外部的東西。函數實現的功能和目標要單一化。這跟前面的道理是一樣的,目的是降低耦合性。 關于函數的事情,總是說不完的,下面就羅列一些編寫函數的注意事項。特別聲明,這些事項不是我總結的,我是從一本名字為《Learning Python》的書里面抄過來的,順便寫成...
摘要:語句,遍列列表字符串字典集合等迭代器,依次處理迭代器中的每個元素。與配合使用處理在程序運行中出現的異常情況。表示此行為空,不運行任何操作。在迭代器函數內使用,用于返回一個元素。恭請到上瀏覽及時更新的教程零基礎學 小孩子剛剛開始學說話的時候,常常是一個字一個字地開始學,比如學說餃子,對他/她來講,似乎有點難度,大人也聰明,于是就簡化了,用餃餃來代替,其實就是讓孩子學會一個字就能表達。當然...
閱讀 1407·2021-11-24 10:20
閱讀 3649·2021-11-24 09:38
閱讀 2294·2021-09-27 13:37
閱讀 2196·2021-09-22 15:25
閱讀 2270·2021-09-01 18:33
閱讀 3488·2019-08-30 15:55
閱讀 1783·2019-08-30 15:54
閱讀 2081·2019-08-30 12:50