零基礎學python 不要紅標頭檔案 2

2021-06-28 01:19:12 字數 4173 閱讀 2540

在前面學習了基本的開啟和建立檔案之後,就可以對檔案進行多種多樣的操作了。請看官要注意,檔案,不是什麼特別的東西,就是乙個物件,如同對待此前學習過的字串、列表等一樣。

所謂屬性,就是能夠通過乙個檔案物件得到的東西。

>>> f = open("131.txt","a")

>>> f.name

'131.txt'

>>> f.mode #顯示當前檔案開啟的模式

'a'>>> f.closed #檔案是否關閉,如果關閉,返回true;如果開啟,返回false

false

>>> f.close() #關閉檔案的內建函式

>>> f.closed

true

很多時候,我們需要獲取乙個檔案的有關狀態(有時候成為屬性,但是這裡的檔案屬性和上面的檔案屬性是不一樣的,可是,我覺得稱之為檔案狀態更好一點),比如建立日期,訪問日期,修改日期,大小,等等。在os模組中,有這樣乙個方法,能夠解決此問題:

>>> import os

>>> file_stat = os.stat("131.txt") #檢視這個檔案的狀態

>>> file_stat #檔案狀態是這樣的。從下面的內容,有不少從英文單詞中可以猜測出來。

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 #這個是檔案建立時間

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)

以上關於檔案狀態和檔案屬性的內容,在對檔案的某些方面進行判斷和操作的時候或許會用到。特別是檔案屬性。比如在操作檔案的時候,我們經常要首先判斷這個檔案是否已經關閉或者開啟,就需要用到file.closed這個屬性來判斷了。

>>> 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']

>>>

這麼多內建函式,不會都講述,只能撿著重點的來實驗了。

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

>>> f.read()

'my name is qiwsir.\nmy website is qiwsir.github.io\naha,i like program\n'

>>>

file.read()能夠將檔案中的內容全部讀取過來。特別注意,這是返回乙個字串,而且是將檔案中的內容全部讀到記憶體中。試想,如果內容太多是不是就有點慘了呢?的確是,千萬不要去讀大個的檔案。

>>> contant = f.read()

>>> type(contant)

如果檔案比較大了,就不要一次都讀過來,可以轉而一行一行地,用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() #已經到最後一行了,再讀,不報錯,返回空

''

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

>>> 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)

>>> for line in cont:

... print line

...

my name is qiwsir.

my website is qiwsir.github.io

aha,i like program

從實驗中我們可以看到,readlines和read有一樣之處,都是將檔案內容一次性讀出來,存放在記憶體,但是兩者也有區別,read返回的是str型別,readlines返回的是list,而且一行乙個元素,因此,就可以通過for逐行列印出來了。

在print line中,注意觀察list裡面的每個元素,最後都是乙個\n結尾,所以列印的結果會有空行。其原因前面已經介紹過了,忘了的朋友請回滾到上一講

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

>>> f

>>> type(f)

>>> for line in f:

... print line

...

my name is qiwsir.

my website is qiwsir.github.io

aha,i like program

以上都是讀檔案的內建函式和方法。除了讀,就是要寫。所謂寫,就是將內容存入到檔案中。用到的內建函式是write。但是,要寫入檔案,還要注意開啟檔案的模式,可以是w,也可以是a,看具體情況而定。

>>> f = open("131.txt","a")     #因為這個檔案已經存在,我又不想清空,用追加的模式

>>> f.write("there is a baby.") #這句話應該放到檔案最後

>>> f.close() #請看官注意,寫了之後,一定要及時關閉檔案。才能代表真正寫入

看看寫的效果:

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

以上是關於檔案的基本操作。其實對檔案遠遠不知這些,有興趣的看官可以google一下pickle這個模組,是乙個很好用的東西。

零基礎學Python

零基礎學python 1 1 python是一門指令碼語言 2 python的優勢 1 語法和結構比較簡單,易入門 2 能夠跨平台使用 3 應用範圍廣,設計到作業系統 3d動畫 web 雲計算,企業應用等多方面。3 idle 是乙個python shell,類似於windows的cmd視窗 4 pr...

零基礎學python 一

每次學習語言總是要了解其背景python也不例外。首先python的創始人為 guido van rossum 1989年聖誕節期間,在 阿姆斯特丹 guido為了打發聖誕節的無趣,決心開發乙個新的指令碼 解釋程式 做為abc 語言的一種繼承。看看人家外鬼子程式設計師 哎不得不佩服。他在業餘時間開發...

零基礎學Python筆記

alt n 最遠一條語句 alt p 最近一條語句 tab的兩個作用 1 縮排 2 補足 isinstance str1,str 判斷型別 s為字串 s.isalnum 所有字元都是數字或者字母,為真返回 ture,否則返回 false。s.isalpha 所有字元都是字母,為真返回 ture,否則...