最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2014年09月28日 15:45:14   投稿:hebedich  
紅頭文件,是某國特別色的東西,在python里不需要,python里要處理的是計(jì)算機(jī)中的文件,包括文本的、圖片的、音頻的、視頻的等等,還有不少?zèng)]見過的擴(kuò)展名的,文件,在python中,是一種對象,就如同已經(jīng)學(xué)習(xí)過的字符串、數(shù)字等一樣。

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

紅頭文件,是某國特別色的東西,在python里不需要,python里要處理的是計(jì)算機(jī)中的文件,包括文本的、圖片的、音頻的、視頻的等等,還有不少?zèng)]見過的擴(kuò)展名的,在linux中,不是所有的東西都被保存到文件中嗎?文件,在python中,是一種對象,就如同已經(jīng)學(xué)習(xí)過的字符串、數(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']

然后對部分屬性進(jìn)行詳細(xì)說明,就是看官學(xué)習(xí)了。

打開文件

在某個(gè)文件夾下面建立了一個(gè)文件,名曰:130.txt,并且在里面輸入了如下內(nèi)容:

learn python
http://qiwsir.github.io
qiwsir@gmail.com

此文件以供三行。

下圖顯示了這個(gè)文件的存儲(chǔ)位置:

在上面截圖中,我在當(dāng)前位置輸入了python(我已經(jīng)設(shè)置了環(huán)境變量,如果你沒有,需要寫全啟動(dòng)python命令路徑),進(jìn)入到交互模式。在這個(gè)交互模式下,這樣操作:

>>> f = open("130.txt")   #打開已經(jīng)存在的文件
>>> for line in f:
...   print line
... 
learn python

http://qiwsir.github.io

qiwsir@gmail.com

將打開的文件,賦值個(gè)變量f,這樣也就是變量f跟對象文件130.txt用線連起來了(對象引用)。

接下來,用for來讀取文件中的內(nèi)容,就如同讀取一個(gè)前面已經(jīng)學(xué)過的序列對象一樣,如list、str、tuple,把讀到的文件中的每行,賦值給變量line。也可以理解為,for循環(huán)是一行一行地讀取文件內(nèi)容。每次掃描一行,遇到行結(jié)束符號(hào)\n表示本行結(jié)束,然后是下一行。

從打印的結(jié)果看出,每一樣跟前面看到的文件內(nèi)容中的每一行是一樣的。只是行與行之間多了一空行,前面顯示文章內(nèi)容的時(shí)候,沒有這個(gè)空行?;蛟S這無關(guān)緊要,但是,還要深究一下,才能豁然。

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

>>> f = open('130.txt')
>>> for line in f:
...   print line,   #后面加一個(gè)逗號(hào),就去掉了原來默認(rèn)增加的\n了,看看,少了空行。
... 
learn python
http://qiwsir.github.io
qiwsir@gmail.com

在進(jìn)行上述操作的時(shí)候,有沒有遇到這樣的情況呢?

>>> f = open('130.txt')
>>> for line in f:
...   print line,
... 
learn python
http://qiwsir.github.io
qiwsir@gmail.com

>>> for line2 in f:   #在前面通過for循環(huán)讀取了文件內(nèi)容之后,再次讀取,
...   print line2   #然后打印,結(jié)果就什么也顯示,這是什么問題?
... 
>>>

如果看官?zèng)]有遇到上面問題,可以試試。遇到了,這就解惑。不是什么錯(cuò)誤,是因?yàn)榍耙淮我呀?jīng)讀取了文件內(nèi)容,并且到了文件的末尾了。再重復(fù)操作,就是從末尾開始繼續(xù)讀了。當(dāng)然顯示不了什么東西,但是python并不認(rèn)為這是錯(cuò)誤,因?yàn)楹竺婢蜁?huì)講到,或許在這次讀取之前,已經(jīng)又向文件中追加內(nèi)容了。那么,如果要再次讀取怎么辦?就從新來一邊好了。

特別提醒看官,因?yàn)楫?dāng)前的交互模式是在該文件所在目錄啟動(dòng)的,所以,就相當(dāng)于這個(gè)實(shí)驗(yàn)室和文件130.txt是同一個(gè)目錄,這時(shí)候我們打開文件130.txt,就認(rèn)為是在本目錄中打開,如果文件不是在本目錄中,需要寫清楚路徑。

比如:在上一級(jí)目錄中(~/Documents/ITArticles/BasicPython),加入我進(jìn)入到那個(gè)目錄中,運(yùn)行交互模式,然后試圖打開130.txt文件。

>>> f = open("130.txt")
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
IOError: [Errno 2] No such file or directory: '130.txt'

>>> f = open("./codes/130.txt")   #必須得寫上路徑了(注意,windows的路徑是\隔開,需要轉(zhuǎn)義。對轉(zhuǎn)義符,看官看以前講座)
>>> for line in f:
...   print line
... 
learn python

http://qiwsir.github.io

qiwsir@gmail.com

>>> 

創(chuàng)建文件

上面的實(shí)驗(yàn)中,打開的是一個(gè)已經(jīng)存在的文件。如何創(chuàng)建文件呢?

>>> nf = open("131.txt","w")
>>> nf.write("This is a file")

就這樣創(chuàng)建了一個(gè)文件?并寫入了文件內(nèi)容呢?看看再說:

真的就這樣創(chuàng)建了新文件,并且里面有那句話呢。

看官注意了沒有,這次我們同樣是用open()這個(gè)函數(shù),但是多了個(gè)"w",這是在告訴python用什么樣的模式打開文件。也就是說,用open()打開文件,可以有不同的模式打開??聪卤恚?/p>

模式 描述r 以讀方式打開文件,可讀取文件信息。w 以寫方式打開文件,可向文件寫入信息。如文件存在,則清空該文件,再寫入新內(nèi)容a 以追加模式打開文件(即一打開文件,文件指針自動(dòng)移到文件末尾),如果文件不存在則創(chuàng)建r+ 以讀寫方式打開文件,可對文件進(jìn)行讀和寫操作。w+ 消除文件內(nèi)容,然后以讀寫方式打開文件。a+ 以讀寫方式打開文件,并把文件指針移到文件尾。b 以二進(jìn)制模式打開文件,而不是以文本模式。該模式只對Windows或Dos有效,類Unix的文件是用二進(jìn)制模式進(jìn)行操作的。

從表中不難看出,不同模式下打開文件,可以進(jìn)行相關(guān)的讀寫。那么,如果什么模式都不寫,像前面那樣呢?那樣就是默認(rèn)為r模式,只讀的方式打開文件。

>>> f = open("130.txt")
>>> f
<open file '130.txt', mode 'r' at 0xb7530230>
>>> f = open("130.txt","r")
>>> f
<open file '130.txt', mode 'r' at 0xb750a700>

可以用這種方式查看當(dāng)前打開的文件是采用什么模式的,上面顯示,兩種模式是一樣的效果。下面逐個(gè)對各種模式進(jìn)行解釋

"w":以寫方式打開文件,可向文件寫入信息。如文件存在,則清空該文件,再寫入新內(nèi)容

131.txt這個(gè)文件是存在的,前面建立的,并且在里面寫了一句話:This is a file

>>> fp = open("131.txt")
>>> for line in fp:     #原來這個(gè)文件里面的內(nèi)容
...   print line
... 
This is a file
>>> fp = open("131.txt","w")  #這時(shí)候再看看這個(gè)文件,里面還有什么呢?是不是空了呢?
>>> fp.write("My name is qiwsir.\nMy website is qiwsir.github.io") #再查看內(nèi)容
>>> fp.close()

查看文件內(nèi)容:

$ cat 131.txt #cat是linux下顯示文件內(nèi)容的命令,這里就是要顯示131.txt內(nèi)容
My name is qiwsir.
My website is qiwsir.github.io

"a":以追加模式打開文件(即一打開文件,文件指針自動(dòng)移到文件末尾),如果文件不存在則創(chuàng)建

>>> fp = open("131.txt","a")
>>> fp.write("\nAha,I like program\n")  #向文件中追加
>>> fp.close()              #這是關(guān)閉文件,一定要養(yǎng)成一個(gè)習(xí)慣,寫完內(nèi)容之后就關(guān)閉

查看文件內(nèi)容:

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

其它項(xiàng)目就不一一講述了??垂倏梢宰约簩?shí)驗(yàn)。

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

相關(guān)文章

  • Django 解決distinct無法去除重復(fù)數(shù)據(jù)的問題

    Django 解決distinct無法去除重復(fù)數(shù)據(jù)的問題

    這篇文章主要介紹了Django 解決distinct無法去除重復(fù)數(shù)據(jù)的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • pyqt5 QListWidget的用法解析

    pyqt5 QListWidget的用法解析

    這篇文章主要介紹了pyqt5 QListWidget的用法解析,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • 如何在mac版pycharm選擇python版本

    如何在mac版pycharm選擇python版本

    這篇文章主要介紹了如何在mac版pycharm選擇python版本,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Python?tuple方法和string常量介紹

    Python?tuple方法和string常量介紹

    這篇文章主要介紹了Python?tuple方法和string常量,文章基于python的相關(guān)資料展開詳細(xì)內(nèi)容,對初學(xué)python的通知有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-05-05
  • Python使用Tkinter實(shí)現(xiàn)機(jī)器人走迷宮

    Python使用Tkinter實(shí)現(xiàn)機(jī)器人走迷宮

    這篇文章主要為大家詳細(xì)介紹了Python使用Tkinter實(shí)現(xiàn)機(jī)器人走迷宮,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • python實(shí)現(xiàn)圖片變亮或者變暗的方法

    python實(shí)現(xiàn)圖片變亮或者變暗的方法

    這篇文章主要介紹了python實(shí)現(xiàn)圖片變亮或者變暗的方法,涉及Python中Image模塊操作圖片的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • Python中encode和encoding的區(qū)別小結(jié)

    Python中encode和encoding的區(qū)別小結(jié)

    encode和encoding在Python中雖然都與字符編碼相關(guān),但它們的角色和用途是不同的,本文主要介紹了Python中encode和encoding的區(qū)別小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • python數(shù)據(jù)分析之將爬取的數(shù)據(jù)保存為csv格式

    python數(shù)據(jù)分析之將爬取的數(shù)據(jù)保存為csv格式

    Python內(nèi)置了CSV模塊,可直接通過該模塊實(shí)現(xiàn)csv文件的讀寫操作,在web應(yīng)用中導(dǎo)出數(shù)據(jù)是比較常見操作,下面這篇文章主要給大家介紹了關(guān)于python數(shù)據(jù)分析之將爬取的數(shù)據(jù)保存為csv格式的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • 在python3中實(shí)現(xiàn)更新界面

    在python3中實(shí)現(xiàn)更新界面

    今天小編就為大家分享一篇在python3中實(shí)現(xiàn)更新界面,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • 報(bào)錯(cuò)No?module?named?numpy問題的解決辦法

    報(bào)錯(cuò)No?module?named?numpy問題的解決辦法

    之前安裝了Python,后來因?yàn)榫毩?xí)使用Python寫科學(xué)計(jì)算的東西,又安裝了Anaconda,但是安裝Anaconda之后又出現(xiàn)了一個(gè)問題,下面這篇文章主要給大家介紹了關(guān)于報(bào)錯(cuò)No?module?named?numpy問題的解決辦法,需要的朋友可以參考下
    2022-08-08

最新評論

澄迈县| 安泽县| 舟曲县| 新兴县| 新建县| 西峡县| 黔江区| 澄城县| 若羌县| 黄大仙区| 金乡县| 钦州市| 许昌县| 泰来县| 安泽县| 卢氏县| 都安| 吉水县| 嘉黎县| 竹山县| 连城县| 宝清县| 孟州市| 松原市| 龙海市| 固原市| 安龙县| 石台县| 察哈| 福泉市| 拜城县| 乐安县| 赤壁市| 巧家县| 安多县| 精河县| 西青区| 武平县| 绩溪县| 通榆县| 乌海市|