成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

[零基礎(chǔ)學(xué)Python]不要紅頭文件(1)

changfeng1050 / 3304人閱讀

摘要:如文件存在,則清空該文件,再寫入新內(nèi)容以追加模式打開文件即一打開文件,文件指針自動(dòng)移到文件末尾,如果文件不存在則創(chuàng)建以讀寫方式打開文件,可對(duì)文件進(jìn)行讀和寫操作。以讀寫方式打開文件,并把文件指針移到文件尾。

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

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

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

打開文件

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

learn python
http://qiwsir.github.io
[email protected]

此文件以供三行。

下圖顯示了這個(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

[email protected]

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

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

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

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

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

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

>>> f = open("130.txt")
>>> for line in f:
...     print line,
... 
learn python
http://qiwsir.github.io
[email protected]

>>> 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 "", line 1, in 
IOError: [Errno 2] No such file or directory: "130.txt"

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

http://qiwsir.github.io

[email protected]

>>> 
創(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+ 以讀寫方式打開文件,可對(duì)文件進(jìn)行讀和寫操作。
w+ 消除文件內(nèi)容,然后以讀寫方式打開文件。
a+ 以讀寫方式打開文件,并把文件指針移到文件尾。
b 以二進(jìn)制模式打開文件,而不是以文本模式。該模式只對(duì)Windows或Dos有效,類Unix的文件是用二進(jìn)制模式進(jìn)行操作的。

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

>>> f = open("130.txt")
>>> f

>>> f = open("130.txt","r")
>>> f

可以用這種方式查看當(dāng)前打開的文件是采用什么模式的,上面顯示,兩種模式是一樣的效果。下面逐個(gè)對(duì)各種模式進(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.
My 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("
Aha,I like program
")    #向文件中追加
>>> 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ù)文件。感冒藥吃了,昏昏欲睡。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/37332.html

相關(guān)文章

  • [基礎(chǔ)學(xué)python]不要紅頭文件(2)

    摘要:文件的內(nèi)置函數(shù)這么多內(nèi)置函數(shù),不會(huì)都講述,只能撿著重點(diǎn)的來實(shí)驗(yàn)了。對(duì)付大點(diǎn)的文件,還是推薦這么做以上都是讀文件的內(nèi)置函數(shù)和方法。 在前面學(xué)習(xí)了基本的打開和建立文件之后,就可以對(duì)文件進(jìn)行多種多樣的操作了。請(qǐng)看官要注意,文件,不是什么特別的東西,就是一個(gè)對(duì)象,如同對(duì)待此前學(xué)習(xí)過的字符串、列表等一樣。 文件的屬性 所謂屬性,就是能夠通過一個(gè)文件對(duì)象得到的東西。 >>> f = open...

    Yumenokanata 評(píng)論0 收藏0
  • [基礎(chǔ)學(xué)python]重回函數(shù)

    摘要:函數(shù)的基本結(jié)構(gòu)中的函數(shù)基本結(jié)構(gòu)函數(shù)名參數(shù)列表語句幾點(diǎn)說明函數(shù)名的命名規(guī)則要符合中的命名要求。在中,將這種依賴關(guān)系,稱之為多態(tài)。不要期待在原處修改的函數(shù)會(huì)返回結(jié)果比如一定要之用括號(hào)調(diào)用函數(shù)不要在導(dǎo)入和重載中使用擴(kuò)展名或路徑。 在本教程的開始部分,就已經(jīng)引入了函數(shù)的概念:《永遠(yuǎn)強(qiáng)大的函數(shù)》,之所以那時(shí)候就提到函數(shù),是因?yàn)槲矣X得函數(shù)之重要,遠(yuǎn)遠(yuǎn)超過一般。這里,重回函數(shù),一是復(fù)習(xí),二是要在已經(jīng)...

    dmlllll 評(píng)論0 收藏0
  • 先轉(zhuǎn)行從基礎(chǔ)入門學(xué)編程可以嗎?

    摘要:你只需要相信一句話鍵盤敲爛,月薪過萬就行了,進(jìn)入正文,零基礎(chǔ)入門知識(shí)點(diǎn)大綱如下其實(shí)到目前為止,的崗位需求還是非常多的,還是大多數(shù)企業(yè)后臺(tái)開發(fā)的主流編程語言,功能強(qiáng)大,還是很值得學(xué)習(xí)的。 ...

    desdik 評(píng)論0 收藏0
  • [基礎(chǔ)學(xué)python]傳說中的函數(shù)編寫條規(guī)

    摘要:關(guān)于函數(shù)的事情,總是說不完的,下面就羅列一些編寫函數(shù)的注意事項(xiàng)。函數(shù)具有獨(dú)立性。也就是常說的不要有太強(qiáng)的耦合性。要讓函數(shù)能夠獨(dú)立于外部的東西。函數(shù)實(shí)現(xiàn)的功能和目標(biāo)要單一化。這跟前面的道理是一樣的,目的是降低耦合性。 關(guān)于函數(shù)的事情,總是說不完的,下面就羅列一些編寫函數(shù)的注意事項(xiàng)。特別聲明,這些事項(xiàng)不是我總結(jié)的,我是從一本名字為《Learning Python》的書里面抄過來的,順便寫成...

    mushang 評(píng)論0 收藏0
  • [基礎(chǔ)學(xué)Python]正規(guī)地說一句話

    摘要:語句,遍列列表字符串字典集合等迭代器,依次處理迭代器中的每個(gè)元素。與配合使用處理在程序運(yùn)行中出現(xiàn)的異常情況。表示此行為空,不運(yùn)行任何操作。在迭代器函數(shù)內(nèi)使用,用于返回一個(gè)元素。恭請(qǐng)到上瀏覽及時(shí)更新的教程零基礎(chǔ)學(xué) 小孩子剛剛開始學(xué)說話的時(shí)候,常常是一個(gè)字一個(gè)字地開始學(xué),比如學(xué)說餃子,對(duì)他/她來講,似乎有點(diǎn)難度,大人也聰明,于是就簡(jiǎn)化了,用餃餃來代替,其實(shí)就是讓孩子學(xué)會(huì)一個(gè)字就能表達(dá)。當(dāng)然...

    Freeman 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<