python對文件的處理是很強大的
打開文件:
open
f = open(r'C:\test\something.txt') #windows 下
還可以提供模式參數,來說明讀和寫
f = open(url,model)
值 描述
'r' 讀模式
'w' 寫模式(會清空原文件)
'a' 追寫模式(在原文件後面追寫)
'b' 二進制模式(可添加到其他模式中)
'+' 讀/寫模式(可添加到其他模式中)
‘b’模式改變處理文件的方法,一般來說,對於文本文件,並不需要,而處理其它類型的文件,如聲音或圖像,應該在模式參數中添加‘b’
文件讀:
read
read方法讀取文件,默認是一個個的去讀,但也可以帶參數,讀指定個字符,會改變文件流,已讀取的會被刪除
readline
readline方法是一行行去讀,默認參數讀取到換行符爲止,使用參數時同read函數。會改變文件流,已讀取的會被刪除。
reandlines
readlines方法是一行行去讀,返回一個列表,每行作爲一個元素。會改變文件流,已讀取的會被刪除。
文件寫:
write
調用f.write(string)時,所提供的參數string會被追加到文件已存在部分的後面,沒有writeline方法
writelines
對比readlines方法,和它相反。注意不會增加新行,需要自己添加
#-----------------------創建文本
f = open('eple.txt','w')
f.write('hello world!\n')
f.write('By eple')
f.close()
#-----------------------對比read, readline, reandlines,這幾個函數都會改變f
def process(str):
print 'Processing: ',str
f = open('eple.txt')
# str = f.readline()
# strs = f.readlines()
#-----------------------按字輸出
char = f.read(1)
while char:
process(char)
char = f.read(1)
f.close()
''' 效果同上'''
for char in f.read():
process(char)
f.close()
''' 效果同上 '''
for char in f.readline():
process(char)
f.close()
#-----------------------按行輸出
#-----------------------文件過大時,readlines太佔內存,可以用readline用代替
char = f.readline()
while char:
process(char)
char = f.readline()
f.close()
''' 效果同上 '''
for char in f.readlines():
process(char)
f.close()
文件關閉:
每次處理完文件之後,一定要記住用
close
方法關閉文件
文件迭代:
參考上面的代碼。
但是對非常大的文件對象進行操作的時候,readlines會佔用太多內存,可以用while循環和readline方法代替。但是我們總是推薦用for循環。所以我們也可以
import fileinput
for line in fileinput.input('eple.txt'):
process(line)
最推薦,最最優雅的迭代方法:
for line in f:
process(line)
f.close()
因爲文件對象本身就是可迭代的