python 文件處理 -- 01 文件打開&讀取&寫入&關閉&指針
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決定,而且不是
實際上不是一次性讀取完文件,只是讀取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 文件打開&讀取&寫入&關閉&指針