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

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

 更新時間:2014年09月28日 15:49:24   投稿:hebedich  
在前面學習了基本的打開和建立文件之后,就可以對文件進行多種多樣的操作了。請看官要注意,文件,不是什么特別的東西,就是一個對象,如同對待此前學習過的字符串、列表等一樣。

文件的屬性

所謂屬性,就是能夠通過一個文件對象得到的東西。

復制代碼 代碼如下:

>>> f = open("131.txt","a")
>>> f.name
'131.txt'
>>> f.mode      #顯示當前文件打開的模式
'a'
>>> f.closed    #文件是否關(guān)閉,如果關(guān)閉,返回True;如果打開,返回False
False
>>> f.close()   #關(guān)閉文件的內(nèi)置函數(shù)
>>> f.closed
True

文件的有關(guān)狀態(tài)

很多時候,我們需要獲取一個文件的有關(guān)狀態(tài)(有時候成為屬性,但是這里的文件屬性和上面的文件屬性是不一樣的,可是,我覺得稱之為文件狀態(tài)更好一點),比如創(chuàng)建日期,訪問日期,修改日期,大小,等等。在os模塊中,有這樣一個方法,能夠解決此問題:

復制代碼 代碼如下:

>>> import os
>>> file_stat = os.stat("131.txt")      #查看這個文件的狀態(tài)
>>> file_stat                           #文件狀態(tài)是這樣的。從下面的內(nèi)容,有不少從英文單詞中可以猜測出來。
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                  #這個是文件創(chuàng)建時間
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)

以上關(guān)于文件狀態(tài)和文件屬性的內(nèi)容,在對文件的某些方面進行判斷和操作的時候或許會用到。特別是文件屬性。比如在操作文件的時候,我們經(jīng)常要首先判斷這個文件是否已經(jīng)關(guān)閉或者打開,就需要用到file.closed這個屬性來判斷了。

文件的內(nèi)置函數(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']
>>>

這么多內(nèi)置函數(shù),不會都講述,只能撿著重點的來實驗了。

復制代碼 代碼如下:

>>> f = open("131.txt","r")
>>> f.read()
'My name is qiwsir.\nMy website is qiwsir.github.io\nAha,I like program\n'
>>>

file.read()能夠?qū)⑽募械膬?nèi)容全部讀取過來。特別注意,這是返回一個字符串,而且是將文件中的內(nèi)容全部讀到內(nèi)存中。試想,如果內(nèi)容太多是不是就有點慘了呢?的確是,千萬不要去讀大個的文件。

復制代碼 代碼如下:

>>> contant = f.read()
>>> type(contant)
<type 'str'>

如果文件比較大了,就不要一次都讀過來,可以轉(zhuǎn)而一行一行地,用readline

復制代碼 代碼如下:

>>> f = open("131.txt","r")
>>> f.readline()        #每次返回一行,然后指針向下移動
'My name is qiwsir.\n'
>>> f.readline()        #再讀,再返回一行
'My website is qiwsir.github.io\n'
>>> f.readline()
'Aha,I like program\n'
>>> f.readline()        #已經(jīng)到最后一行了,再讀,不報錯,返回空
''

這個方法,看官是不是覺得太慢了呢?有沒有痛快點的呢?有,請揮刀自宮,不用自宮,也能用readlines。注意區(qū)別,這個是復數(shù),言外之意就是多行啦。

復制代碼 代碼如下:

>>> f = open("131.txt","r")
>>> cont = f.readlines()
>>> cont
['My name is qiwsir.\n', 'My website is qiwsir.github.io\n', 'Aha,I like program\n']
>>> type(cont)
<type 'list'>
>>> for line in cont:
...     print line
...
My name is qiwsir.

My website is qiwsir.github.io

Aha,I like program

從實驗中我們可以看到,readlines和read有一樣之處,都是將文件內(nèi)容一次性讀出來,存放在內(nèi)存,但是兩者也有區(qū)別,read返回的是str類型,readlines返回的是list,而且一行一個元素,因此,就可以通過for逐行打印出來了。

在print line中,注意觀察list里面的每個元素,最后都是一個\n結(jié)尾,所以打印的結(jié)果會有空行。其原因前面已經(jīng)介紹過了,忘了的朋友請回滾到上一講

不過,還是要提醒列位,太大的文件不用都讀到內(nèi)存中。對付大點的文件,還是推薦這么做:

復制代碼 代碼如下:

>>> f = open("131.txt","r")
>>> f
<open file '131.txt', mode 'r' at 0xb757c230>
>>> type(f)
<type 'file'>
>>> for line in f:
...     print line
...
My name is qiwsir.

My website is qiwsir.github.io

Aha,I like program

以上都是讀文件的內(nèi)置函數(shù)和方法。除了讀,就是要寫。所謂寫,就是將內(nèi)容存入到文件中。用到的內(nèi)置函數(shù)是write。但是,要寫入文件,還要注意打開文件的模式,可以是w,也可以是a,看具體情況而定。

復制代碼 代碼如下:

>>> f = open("131.txt","a")     #因為這個文件已經(jīng)存在,我又不想清空,用追加的模式
>>> f.write("There is a baby.") #這句話應該放到文件最后
>>> f.close()                   #請看官注意,寫了之后,一定要及時關(guān)閉文件。才能代表真正寫入

看看寫的效果:

復制代碼 代碼如下:

>>> 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.        #果然增加了這一行


以上是關(guān)于文件的基本操作。其實對文件遠遠不知這些,有興趣的看官可以google一下pickle這個模塊,是一個很好用的東西。

相關(guān)文章

最新評論

沐川县| 建湖县| 北京市| 山东省| 文安县| 阳城县| 贵定县| 体育| 孟连| 清水河县| 嘉兴市| 曲沃县| 丰镇市| 建瓯市| 涿州市| 城步| 芦山县| 张家港市| 白河县| 门头沟区| 莱西市| 远安县| 陇川县| 仙桃市| 滕州市| 长子县| 吉木萨尔县| 南阳市| 密云县| 辉县市| 龙州县| 平陆县| 收藏| 芜湖市| 罗山县| 林甸县| 手游| 图们市| 大埔区| 麦盖提县| 宣城市|