這幾天一直在幫一個博士做實驗,負責(zé)的是數(shù)據(jù)處理這部分的東西。因為用python做數(shù)據(jù)處理時會時常做一些文件操作,所以我學(xué)習(xí)了一下Python的文件操作。
今天剛好有空,就把東西總結(jié)一下。
一、打開文件
首先,要對文件進行操作需要打開文件,這里用到了open函數(shù)。
f = open(filename , mode) 函數(shù)的第一個參數(shù)是文件名,類型是字符串。 函數(shù)的第二個參數(shù)是模式。 函數(shù)的返回值是文件的句柄。
mode有如下一些可選值: 'r' 只讀
'w' 只寫,會覆蓋之前的內(nèi)容,沒有文件會創(chuàng)建
'r+' 讀寫
'w+' 讀寫,會覆蓋之前的內(nèi)容,沒有文件會創(chuàng)建
'a' 寫,但是不會覆蓋之前的內(nèi)容,是在之前的內(nèi)容的基礎(chǔ)上,繼續(xù)寫
二、讀文件
打開文件后,就可以對文件進行讀寫了。先說讀,Python讀文件的函數(shù)有三個。
f.read() 返回的是一個包含文件所有內(nèi)容的字符串。
f.readline() 以字符串的形式返回文件的一行內(nèi)容。
f.readlines() 返回的是一個列表,文件的一行內(nèi)容為列表的一組數(shù)據(jù)
舉例說明一下三個函數(shù)的差別:
比如文件中存了str這個字符串
>>> str = ''' a
...b
...c'''
>>>f.read()
>>>'a/nb/nc'
>>>f.readline()
>>>a
>>>f.readline()
>>>b
>>>f.readline()
>>>c
>>>f.readline()
>>>''
>>>f.readlines()
>>>['a/n','b/n','c']
readlines() 常用的一種寫法:
for i in f.readlines() :
pass
三、寫文件
說完讀操作,接下來說一說寫操作。Python的寫操作有兩個函數(shù)。
f.write(content) 有一個參數(shù),是要寫如文件的內(nèi)容,寫入一行,格式是字符串。
f.writelines(content) 有一個參數(shù),是要寫入文件的內(nèi)如,寫入多行,格式是列表。
四、關(guān)閉文件
讀寫完數(shù)據(jù)后,一定要記得把文件關(guān)閉。
f.close()
五、刷新
當(dāng)我們寫入文件數(shù)據(jù)了,但是還沒有關(guān)閉文件前,我們文件的數(shù)據(jù)是不會更新的。如果我們這時想要文件中出現(xiàn)我們剛寫的數(shù)據(jù),就要進行刷新。方法為:
f.flush()
六、文件指針的移動
有時我們需要移動文件的指針,來改變讀寫文件的開始位置,這時就要用到一個很有用的函數(shù)seek()
f.seek(offset , mode) 有兩個參數(shù),offset是偏移量,mode是模式
mode有三個值 0 ,0表示將文件指針移動到文件的開始位置。
1 , 1表示將文件指針移動到文件的當(dāng)前位置。
2 , 2表示將文件指針移動到文件的末尾位置。
在Python中文件不僅是一個對象,還是一個可以迭代的對象!
新聞熱點
疑難解答