摘要:如文件存在,則清空該文件,再寫入新內容以追加模式打開文件即一打開文件,文件指針自動移到文件末尾,如果文件不存在則創建以讀寫方式打開文件,可對文件進行讀和寫操作。以讀寫方式打開文件,并把文件指針移到文件尾。
這兩天身體不給力,拖欠了每天發講座的約定,看官見諒。
紅頭文件,是某國特別色的東西,在python里不需要,python里要處理的是計算機中的文件,包括文本的、圖片的、音頻的、視頻的等等,還有不少沒見過的擴展名的,在linux中,不是所有的東西都被保存到文件中嗎?文件,在python中,是一種對象,就如同已經學習過的字符串、數字等一樣。
先要在交互模式下查看一下文件都有哪些屬性:
>>> 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"]
然后對部分屬性進行詳細說明,就是看官學習了。
打開文件在某個文件夾下面建立了一個文件,名曰:130.txt,并且在里面輸入了如下內容:
learn python http://qiwsir.github.io qiwsir@gmail.com
此文件以供三行。
下圖顯示了這個文件的存儲位置:
在上面截圖中,我在當前位置輸入了python(我已經設置了環境變量,如果你沒有,需要寫全啟動python命令路徑),進入到交互模式。在這個交互模式下,這樣操作:
>>> f = open("130.txt") #打開已經存在的文件 >>> for line in f: ... print line ... learn python http://qiwsir.github.io qiwsir@gmail.com
將打開的文件,賦值個變量f,這樣也就是變量f跟對象文件130.txt用線連起來了(對象引用)。
接下來,用for來讀取文件中的內容,就如同讀取一個前面已經學過的序列對象一樣,如list、str、tuple,把讀到的文件中的每行,賦值給變量line。也可以理解為,for循環是一行一行地讀取文件內容。每次掃描一行,遇到行結束符號 表示本行結束,然后是下一行。
從打印的結果看出,每一樣跟前面看到的文件內容中的每一行是一樣的。只是行與行之間多了一空行,前面顯示文章內容的時候,沒有這個空行。或許這無關緊要,但是,還要深究一下,才能豁然。
在原文中,每行結束有本行結束符號 ,表示換行。在for語句匯總,print line表示每次打印完line的對象之后,就換行,也就是打印完line的對象之后會增加一個 。這樣看來,在每行末尾就有兩個 ,即: ,于是在打印中就出現了一個空行。
>>> f = open("130.txt") >>> for line in f: ... print line, #后面加一個逗號,就去掉了原來默認增加的 了,看看,少了空行。 ... learn python http://qiwsir.github.io qiwsir@gmail.com
在進行上述操作的時候,有沒有遇到這樣的情況呢?
>>> f = open("130.txt") >>> for line in f: ... print line, ... learn python http://qiwsir.github.io qiwsir@gmail.com >>> for line2 in f: #在前面通過for循環讀取了文件內容之后,再次讀取, ... print line2 #然后打印,結果就什么也顯示,這是什么問題? ... >>>
如果看官沒有遇到上面問題,可以試試。遇到了,這就解惑。不是什么錯誤,是因為前一次已經讀取了文件內容,并且到了文件的末尾了。再重復操作,就是從末尾開始繼續讀了。當然顯示不了什么東西,但是python并不認為這是錯誤,因為后面就會講到,或許在這次讀取之前,已經又向文件中追加內容了。那么,如果要再次讀取怎么辦?就從新來一邊好了。
特別提醒看官,因為當前的交互模式是在該文件所在目錄啟動的,所以,就相當于這個實驗室和文件130.txt是同一個目錄,這時候我們打開文件130.txt,就認為是在本目錄中打開,如果文件不是在本目錄中,需要寫清楚路徑。
比如:在上一級目錄中(~/Documents/ITArticles/BasicPython),加入我進入到那個目錄中,運行交互模式,然后試圖打開130.txt文件。
>>> f = open("130.txt") Traceback (most recent call last): File "創建文件", line 1, in IOError: [Errno 2] No such file or directory: "130.txt" >>> f = open("./codes/130.txt") #必須得寫上路徑了(注意,windows的路徑是隔開,需要轉義。對轉義符,看官看以前講座) >>> for line in f: ... print line ... learn python http://qiwsir.github.io qiwsir@gmail.com >>>
上面的實驗中,打開的是一個已經存在的文件。如何創建文件呢?
>>> nf = open("131.txt","w") >>> nf.write("This is a file")
就這樣創建了一個文件?并寫入了文件內容呢?看看再說:
真的就這樣創建了新文件,并且里面有那句話呢。
看官注意了沒有,這次我們同樣是用open()這個函數,但是多了個"w",這是在告訴python用什么樣的模式打開文件。也就是說,用open()打開文件,可以有不同的模式打開。看下表:
模式 | 描述 |
---|---|
r | 以讀方式打開文件,可讀取文件信息。 |
w | 以寫方式打開文件,可向文件寫入信息。如文件存在,則清空該文件,再寫入新內容 |
a | 以追加模式打開文件(即一打開文件,文件指針自動移到文件末尾),如果文件不存在則創建 |
r+ | 以讀寫方式打開文件,可對文件進行讀和寫操作。 |
w+ | 消除文件內容,然后以讀寫方式打開文件。 |
a+ | 以讀寫方式打開文件,并把文件指針移到文件尾。 |
b | 以二進制模式打開文件,而不是以文本模式。該模式只對Windows或Dos有效,類Unix的文件是用二進制模式進行操作的。 |
從表中不難看出,不同模式下打開文件,可以進行相關的讀寫。那么,如果什么模式都不寫,像前面那樣呢?那樣就是默認為r模式,只讀的方式打開文件。
>>> f = open("130.txt") >>> f>>> f = open("130.txt","r") >>> f
可以用這種方式查看當前打開的文件是采用什么模式的,上面顯示,兩種模式是一樣的效果。下面逐個對各種模式進行解釋
"w":以寫方式打開文件,可向文件寫入信息。如文件存在,則清空該文件,再寫入新內容
131.txt這個文件是存在的,前面建立的,并且在里面寫了一句話:This is a file
>>> fp = open("131.txt") >>> for line in fp: #原來這個文件里面的內容 ... print line ... This is a file >>> fp = open("131.txt","w") #這時候再看看這個文件,里面還有什么呢?是不是空了呢? >>> fp.write("My name is qiwsir. My website is qiwsir.github.io") #再查看內容 >>> fp.close()
查看文件內容:
$ cat 131.txt #cat是linux下顯示文件內容的命令,這里就是要顯示131.txt內容 My name is qiwsir. My website is qiwsir.github.io
"a":以追加模式打開文件(即一打開文件,文件指針自動移到文件末尾),如果文件不存在則創建
>>> fp = open("131.txt","a") >>> fp.write(" Aha,I like program ") #向文件中追加 >>> fp.close() #這是關閉文件,一定要養成一個習慣,寫完內容之后就關閉
查看文件內容:
$ cat 131.txt My name is qiwsir. My website is qiwsir.github.io Aha,I like program
其它項目就不一一講述了。看官可以自己實驗。
本講先到這里,明天繼續文件。感冒藥吃了,昏昏欲睡。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/37332.html
摘要:文件的內置函數這么多內置函數,不會都講述,只能撿著重點的來實驗了。對付大點的文件,還是推薦這么做以上都是讀文件的內置函數和方法。 在前面學習了基本的打開和建立文件之后,就可以對文件進行多種多樣的操作了。請看官要注意,文件,不是什么特別的東西,就是一個對象,如同對待此前學習過的字符串、列表等一樣。 文件的屬性 所謂屬性,就是能夠通過一個文件對象得到的東西。 >>> f = open...
摘要:函數的基本結構中的函數基本結構函數名參數列表語句幾點說明函數名的命名規則要符合中的命名要求。在中,將這種依賴關系,稱之為多態。不要期待在原處修改的函數會返回結果比如一定要之用括號調用函數不要在導入和重載中使用擴展名或路徑。 在本教程的開始部分,就已經引入了函數的概念:《永遠強大的函數》,之所以那時候就提到函數,是因為我覺得函數之重要,遠遠超過一般。這里,重回函數,一是復習,二是要在已經...
摘要:你只需要相信一句話鍵盤敲爛,月薪過萬就行了,進入正文,零基礎入門知識點大綱如下其實到目前為止,的崗位需求還是非常多的,還是大多數企業后臺開發的主流編程語言,功能強大,還是很值得學習的。 ...
摘要:關于函數的事情,總是說不完的,下面就羅列一些編寫函數的注意事項。函數具有獨立性。也就是常說的不要有太強的耦合性。要讓函數能夠獨立于外部的東西。函數實現的功能和目標要單一化。這跟前面的道理是一樣的,目的是降低耦合性。 關于函數的事情,總是說不完的,下面就羅列一些編寫函數的注意事項。特別聲明,這些事項不是我總結的,我是從一本名字為《Learning Python》的書里面抄過來的,順便寫成...
摘要:語句,遍列列表字符串字典集合等迭代器,依次處理迭代器中的每個元素。與配合使用處理在程序運行中出現的異常情況。表示此行為空,不運行任何操作。在迭代器函數內使用,用于返回一個元素。恭請到上瀏覽及時更新的教程零基礎學 小孩子剛剛開始學說話的時候,常常是一個字一個字地開始學,比如學說餃子,對他/她來講,似乎有點難度,大人也聰明,于是就簡化了,用餃餃來代替,其實就是讓孩子學會一個字就能表達。當然...
閱讀 2170·2021-11-25 09:43
閱讀 2249·2021-11-24 09:39
閱讀 1540·2021-11-22 12:02
閱讀 2984·2021-11-17 09:33
閱讀 3408·2021-11-15 11:38
閱讀 2718·2021-10-13 09:40
閱讀 1065·2021-09-22 15:41
閱讀 1687·2019-08-30 10:58