1. 程式人生 > >python--文件和流

python--文件和流

它的 read 相對 異常 fin 9.png fileinput flush 設置

一、打開文件:

open(name[, mode[, buffering]]):name指文件名,mode指模式參數,buffering指緩沖。

1、如果沒有找到則會拋異常。

技術分享

2、文件模式:mode

‘r‘:讀模式

‘w‘:寫模式

‘a‘:追加模式

‘b‘:二進制模式,比如聲音剪輯或者圖像則需要使用二進制模式。

‘+‘:讀、寫模式。

3、緩沖:buffering。

控制著文件的緩沖,如果參數是0或者False,I/O輸入輸出就是無緩沖的(所有的讀寫直接針對硬盤),如果是1或者True,I/O就是有緩沖的(意思是使用內存代替硬盤,讓程序更快,只有使用flush或者close時才會更新到硬盤)。

大於1的數字代表緩沖區的大小(單位字節),-1或者任何負數代表使用默認的緩沖區大小。

二、基本的文件方法:

1、讀寫:

技術分享

技術分享

2、管道輸出:Linux Shell管道符|的作用,將一個命令的標準輸出和下一個命令的標準輸入連接在一起。

cat somefile.txt | python somescript.py | sort:somescript.py會從它的sys.stdin中讀取數據(cat somefile.txt寫入的),並把結果寫入它的sys.stdout中。

3、隨機訪問:

seek(offset[, whence]):把當前位置(進行讀寫的位置)移動到由offset和whence定義的位置。offset表示偏移量必須非負數。whence:默認0表示偏移量從文件開頭開始計算的。 whence設置為1(相對於當前位置移動,此時偏移量offset可以是負數)或者2(相對於文件結尾移動)。

技術分享

tell方法:返回當前文件的位置。

技術分享

4、讀寫行:file.readline讀取單獨的一行(從當前位置開始直到一個換行符出現,也讀取換行符)

技術分享

技術分享

5、關閉文件:

1、可以使用try/finally語句:

try:

        #write data to your file

finally:

        #file.close()

2、使用with語句:

from __future__ import with statement

with open(“somefile”) as somefile

        do something(somefile)

6、使用文件的基本方法:

技術分享

技術分享

技術分享

7、對文件內容進行叠代:

1、使用while循環按字節處理:

技術分享

技術分享

2、按行操作:

技術分享

技術分享

3、讀取所有內容:

前提:文件不是很大。

使用read叠代每個字符:

技術分享

技術分享

使用readlines叠代行:

技術分享

技術分享

4、使用fileinput實現懶惰行叠代:

技術分享

技術分享

5、文件叠代器:文件對象是可叠代的,可以直接在for循環中使用它們,從而對它們進行叠代。

技術分享

python--文件和流