Python的文件和流

dfee 9年前發布 | 47K 次閱讀 Python Python開發

1、打開文件

open(name[,mode[,buffering]])

open函數使用一個文件名作為其唯一的一個強制參數,然后返回一個文件對象。模式(mode)和緩沖區(buffering)是可選的。

模式:

 'r'  讀模式

'w'   寫模式

'a'   追加模式

 'b'    二進制模式,添加到其他模式中使用

 '+'   讀/寫模式,添加到其他模式中使用

'+'參數可以用來任何模式后,指明讀和寫都是可以的。'b'模式改變處理文件的方法。

二進制模式和文本模式的區別:在使用二進制模式時,python會原樣地給出文件中的內容,但文本模式下則不一定。python會在文本模式下做一些轉換:當在windows下用文本模式讀取文件時,python會將\r\n轉換成\n,相反,當在windows下用文本模式寫文件時,會把\n轉換成\r \n。

緩沖:

如果參數為0,I/O就是無緩沖,所有的讀寫操作直接針對硬盤。如果是1,I/O就用內存來代替硬盤,是程序更快,使用flush或close時才把內容寫入硬盤。

2、讀和寫

f = open()

f.read(n) 讀取n個字節

f.write(str)

f.close()

3、管式輸出

使用管道可以在一個命令的后面續寫其他多個命令,管道符號將一個命令的標準輸出和下一個命令的標準輸入連在一起。

$ cat test.txt | python somescript.py

文件流隨機訪問函數seek(offset),把當前位置移動到offset定義的位置。

4、讀寫行

file.readline(n)當n為空是,讀取單獨一行,并讀取文件換行符,當n為非負值時讀取文件的前n個字符。

file.readlines()讀取一個文件中的所有行,并以列表的返回。

file.writeline()沒有此函數。

file.wirtelines()將一個字符串列表寫入到字符串文件中。

5、如果想確保文件被關閉了,那么應該使用try/finally語句,并且在finally字句中調用close()方法。

try:

file = open()

#操作文件

finaly:

file.close()

with語句可以打開文件并將其賦值到變量上:

with open() as somefile:

do_someting(somefile)

6、對文件內容進行迭代

6.1 按字節處理,在循環里做如下操作

f.read(1)

6.2 按行處理,在循環里做如下操作

f.readline()

6.3 處理整個文件

f.read() 將文件當做一個字符串來獲取

f.readlines() 將文件讀入到一個字符串列表

7、使用fileinput實現懶惰行迭代

懶惰行迭代的原因:在讀取非常大的文件,readlines會占用太多的內存,而懶惰行迭代只是讀取文件中實際需要的部分。

import fileinput

for line in fileinput.input(filename):

process(line)

8、文件迭代器

文件對象是可以按照行進行迭代的。

f = open(filename)

for line in f:

process(line)

f.close()

可以對文件迭代器執行和普通迭代器相同的操作:list(open(filename))

 本文由用戶 dfee 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!