>>dir(file)['__class__','__delattr__','_" />

亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

跟老齊學Python之不要紅頭文件(1)

系統 1589 0

這兩天身體不給力,拖欠了每天發講座的約定,看官見諒。

紅頭文件,是某國特別色的東西,在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循環是一行一行地讀取文件內容。每次掃描一行,遇到行結束符號\n表示本行結束,然后是下一行。

從打印的結果看出,每一樣跟前面看到的文件內容中的每一行是一樣的。只是行與行之間多了一空行,前面顯示文章內容的時候,沒有這個空行。或許這無關緊要,但是,還要深究一下,才能豁然。

在原文中,每行結束有本行結束符號\n,表示換行。在for語句匯總,print line表示每次打印完line的對象之后,就換行,也就是打印完line的對象之后會增加一個\n。這樣看來,在每行末尾就有兩個\n,即:\n\n,于是在打印中就出現了一個空行。

            
>>> f = open('130.txt')
>>> for line in f:
...   print line,   #后面加一個逗號,就去掉了原來默認增加的\n了,看看,少了空行。
... 
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.\nMy 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("\nAha,I like program\n")  #向文件中追加
>>> fp.close()              #這是關閉文件,一定要養成一個習慣,寫完內容之后就關閉

          

查看文件內容:

            
$ cat 131.txt
My name is qiwsir.
My website is qiwsir.github.io
Aha,I like program

          

其它項目就不一一講述了。看官可以自己實驗。

本講先到這里,明天繼續文件。感冒藥吃了,昏昏欲睡。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产精品福利在线观看入口 | 一级毛片日韩 | 亚洲高清一区二区三区久久 | 国产精品久久久久久久久 | 中文精品久久久久国产网址 | 国产亚洲精aa在线观看不卡 | 国产啪视频1000部免费视频 | 日韩成| 中文字幕亚洲综合久久2 | 久久精品国产99国产精品 | 国产天天操| 日本精品视频一视频高清 | 久久精品94精品久久精品 | 中国国产aa一级毛片 | 久久羞羞 | 久久久亚洲伊人色综合网站 | 久久久国产乱子伦精品 | 国产精品大片天天看片 | 欧美日韩久久中文字幕 | 视频在线一区二区 | 国产综合成色在线视频 | 四虎永久成人免费 | 毛片网页 | 久久精品日日躁精品 | 国产91精品一区二区麻豆网站 | 九九资源网 | 理论在线视频 | 色噜噜狠狠狠狠色综合久一 | 国产精品人伦久久 | 天天操天天操天天 | 九一视频在线免费观看 | 中文字幕不卡免费高清视频 | 91精品国产美女福到在线不卡 | 欧美一区中文字幕 | 国产黄网永久免费 | h在线观看免费 | 亚洲最大成人 | 国产全黄a一级毛片 | 中国欧美一级毛片免费 | 国产精品欧美日韩精品 | 九九365资源稳定资源站 |