1. 程式人生 > >python 文件處理 -- 01 文件打開&讀取&寫入&關閉&指針

python 文件處理 -- 01 文件打開&讀取&寫入&關閉&指針

write read 列表 3-9 png 內容 ddl .py err

1.文件打開

1.1.文件打開方法

open(name[,mode[,buff]] ->file

name--文件路徑

mode--打開方式

buff--緩沖buffer的大小

file--返回file類型的對象

重要:必須要寫close()方法

1.2文件打開方式

技術分享

另:

打開二進制文件(如圖片)時,需使用如下方式

‘rb‘、‘wb‘、‘ab‘、‘rb+‘、‘wb+‘、‘ab+‘

2.文件讀取

2.1文件讀取方法

read([size])

讀取size

個字節,默認 讀取全部。

如果size小於等於文件字節數,則返回size大小的內容,且遊標在讀取完之後的位置

readline([size])

讀取從當前遊標算起的一行。

如果size小於當前行的字節數,則返回size大小的內容,且遊標在讀取完之後的位置

readlines([size])

一次性讀取完文件,返回由每一行組成的list

註意:

size其實是無用的,返回的list長度不由它決定,而是由io模塊化總的io.DEFAULT_BUFFER_SIZE決定,而且不是

size=3就讀取3io.DEFAULT_BUFFER_SIZE字節大小的內容

實際上不是一次性讀取完文件,只是讀取io.DEFAULT_BUFFER_SIZE個字節大小(如8192)的內容,然後返回由比8192稍大或相等的字節大小的內容(保證list[-1]是完整一行)所組成的列表。

iter

使用叠代器按行讀取文件(推薦方法

不受io.DEFAULT_BUFFER_SIZE的限制

>>> f=open("helloworld.py")

>>> iter_f=iter(f)

>>> line=0

>>> for i in iter_f:

... line+=1

...

>>> line

4

3.文件寫入

3.1文件寫入方法

write(str)

將字符串寫入文件

writelines(sequence_of_strings)

提供一個str或由str組成的叠代器,將每個str相連寫入文件中

註:必須是有字符串所組成的序列,否則會報錯

3.2linux寫緩存

技術分享

4.文件關閉

4.1為什麽要關閉文件?

將緩存在內存中的文件寫入到磁盤

linux中,每個進程能打開的文件數是有限的,如果超過這個限制,那麽打開文件就會失敗。

註:

查看某進程的限制

cat /proc/${pid}/limits

技術分享

linux進程打開文件數限制

http://www.cnblogs.com/aka-blog/articles/filemax.html

4.2file.fileno()

文件描述符,用來描述當前文件被打開(未關閉)多少次。

如果超過限制,則會報錯IO Error:Too many open files: ‘xx‘

5.文件指針

5.1seek()函數

移動文件指針

seek(offset[, whence]) -> None

offset--偏移量,可以為負數

whence--偏移相對位置。

可以使用0,1,2;

也可以使用OS模塊的宏定義

os.SEEK_SET(文件起始位置0)

os.SEEK_CUR(文件當前位置1)

os.SEEK_END(文件結束位置2)

5.2舉例

>>> f=open(‘helloworld.py‘,‘r+‘)

>>> c=f.read()

>>> c

helloword123\nhelloword456\nhelloword789‘

>>> f.seek(0,os.SEEK_SET)

>>> f.write(‘helloppt‘)

>>> f.seek(0,os.SEEK_SET)

>>> c=f.read()

>>> c

hellopptd123\nhelloword456\nhelloword789‘

>>> f.close()

python 文件處理 -- 01 文件打開&讀取&寫入&關閉&指針