1、常用函數:
fileObject.read([size])
size為讀取的長度,以byte為機關。如果不指定參數,表示一次性讀取全部
内容,以字元串形式傳回,并且每一行結尾會有一個"\n"符号。
代碼示例1:
結果:
abcede
123
this is a test檔案操作jfedcba
代碼示例2:
讀取:ab
fileObject.readline( [size] )
一行,如果給定了size,有可能傳回的隻是一行的一部分,以字元串的形式返
回,并且結尾會有一個換行符"\n"。讀完一行,檔案操作标記移動到下一行的
開頭
列題1
大學之道,在明明德,在親民,在止于至善。
列題 1:
大學之道,
fileObject.readlines( [size] )
把檔案每一行作為一個list的一個成員,是一個字元串,并且結尾會一個換行符"\n",并傳回這個list。這個函數的内部是通過循環調用readline()來實作的。如果指定了size參數,表示讀取檔案指定内容的長度,此時就有可能隻能讀取檔案的一部分
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCM581dvRWYoNHLwEzX5xCMx8FesU2cfdGLwATMfRHLGZkRGZkRfJ3bs92YskmNhVTYykVNQJVMRhXVEF1X0hXZ0xiNx8VZ6l2cssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL1QTOyEWOzEGNmhTZ4ADZiZ2N5YTY0YGZxEmYwYWM3AzLcNTMvwVMwgTMwIzLcd2bsJ2LcNXZnFWbp9CXt92Yu8GdjFTNuITavw1LcpDc0RHaiojIsJye.png)
fileObject.write( str )
把str寫到檔案中,預設是不加換行符的,是以如果想換行的話,得手動加入換行符'
我是最幫的!!
學習檔案寫入操作
fileObject.writelines( seq )
把seq(序列)的内容全部寫到檔案中(多行一次性寫入)。也不會自動加入換行符
如:
學習檔案寫入操作我是最幫的!!
學習檔案寫入操作,加油!!!
fileObject.close()
File 對象的 close()方法重新整理緩沖區裡任何還沒寫入的資訊,并關閉該檔案,這之後便不能再進行寫入。當一個檔案對象的引用被重新指定給另一個檔案時,Python 會關閉之前的檔案。用 close()方法關閉檔案是一個很好的習慣。如果檔案關閉後,還對檔案進行操作就會産生ValueError錯誤,但如果不及時關閉檔案,有可能産生句
柄洩露,丢失資料
#打開檔案準備寫檔案
檔案名: test.txt
檔案是否關閉: True
fileObject.flush()
該函數是将緩沖區中的内容寫入硬碟
fileObject.tell()
傳回檔案操作标記的目前位置,以檔案的開頭為基準點
目前檔案操作标記位置為: 0
讀取一行後檔案操作标記位置為: 23
fileObject.seek( offset[, from ] )
tell()方法告訴你檔案内的目前位置;換句話說,下一次的讀寫會發生在檔案開頭這麼多位元組之後。seek(offset [,from])這是一個檔案定位函數,該方法改變目前檔案的位置。 Offset變量表示要移動的位元組數。From變量指定開始移動位元組的參考位置。如果from被設為0(預設值),這意味着将檔案的開頭作為移動位元組的參考位置。如果設為1,則使用目前的位置作為參考位置。如果它被設為2,那麼該檔案的末尾将為參考位置。需要注意,如果檔案以a或a+的模式打開,每次進行寫操作時,檔案操作标記會自動傳回到檔案末尾。測試檔案test.txt,内容如下:
讀取的字元串是 : 我是最幫的!
目前檔案位置 : 18
重新讀取字元串 : 我是最幫的!
fileObject.truncate( [size] )
把檔案裁成規定的大小,預設的是裁到目前檔案操作标記的位置。如果size比件的大小還要大,依據系統的不同可能是不改變檔案,也可能是用0把檔案補到相應的大小,也可能是以一些随機的内容加上去。
<code>linecache</code>
子產品允許從任何檔案裡得到任何的行,并且使用緩存進行優化,常見的情況是從單
個檔案讀取多行。
linecache.getlines(filename)
從名為 filename 的檔案中得到全部内容,輸出為清單格式,以檔案每行為清單中的一個元素,
并以 linenum-1 為元素在清單中的位置存儲
linecache.getline(filename,lineno)
從名為 filename 的檔案中得到第 lineno 行。這個函數從不會抛出一個異常–産生錯誤時它将
傳回”(換行符将包含在找到的行裡)。
如果檔案沒有找到,這個函數将會在 sys.path 搜尋。
linecache.clearcache()
清除緩存,如果你不再需要先前從 getline() 中得到的行
linecache.checkcache(filename)
檢查緩存的有效性。如果在緩存中的檔案在硬碟上發生了變化,并且你需要更新版本,使用
這個函數,執行此函數會講淘汰的内容删除。如果省略 filename,将檢查緩存裡的所有條目。
linecache.updatecache(filename)
更新檔案名為 filename 的緩存。如果 filename 檔案更新了,使用這個函數可以更新
傳回的清單。如果出錯,則傳回空清單。
删除空行的方法
列題:
資料檔案:data.log
20160215 000148|0|collect info job start|success|
20160215000153|0|collect info job
end|success|resultcode = 0000
20160216000120|0|collect info job start|success|
20160216000121|0|collect info job
20160217000139|0|collect info job start|success|
20160217000143|0|collect info job
資料分析需求:
每行内容需要生成以每行
首年月日為名稱的檔案,
檔案内容寫入|0|後的所有
行内容(也包括|0| )
算法分析:
周遊每一行,每行取頭8個字母
建立檔案,檔案名為首8個字母,然後把第15字元後的所有字
符拷貝到檔案中
關閉檔案
本文轉自 知止内明 51CTO部落格,原文連結:http://blog.51cto.com/357712148/2060672,如需轉載請自行聯系原作者