python文件操作二
1、常用函數(shù):
size為讀取的長度,以byte為單位。如果不指定參數(shù),表示一次性讀取全部
內(nèi)容,以字符串形式返回,并且每一行結(jié)尾會有一個"\n"符號。
代碼示例1:with open("text.txt","r") as pf: content = pf.read() print content
結(jié)果:
abcede
123
this is a test文件操作jfedcba
代碼示例2:
with open("text.txt","r") as pf:content = pf.read(2)print content結(jié)果:
讀取:ab
一行,如果給定了size,有可能返回的只是一行的一部分,以字符串的形式返
回,并且結(jié)尾會有一個換行符"\n"。讀完一行,文件操作標(biāo)記移動到下一行的
開頭
列題1
結(jié)果:
大學(xué)之道,在明明德,在親民,在止于至善。
列題 1:
結(jié)果:
大學(xué)之道,
把文件每一行作為一個list的一個成員,是一個字符串,并且結(jié)尾會一個換行符"\n",并返回這個list。這個函數(shù)的內(nèi)部是通過循環(huán)調(diào)用readline()來實現(xiàn)的。如果指定了size參數(shù),表示讀取文件指定內(nèi)容的長度,此時就有可能只能讀取文件的一部分
結(jié)果:
把str寫到文件中,默認(rèn)是不加換行符的,所以如果想換行的話,得手動加入換行符'
結(jié)果:
我是最幫的!!
學(xué)習(xí)文件寫入操作
把seq(序列)的內(nèi)容全部寫到文件中(多行一次性寫入)。也不會自動加入換行符
如:
結(jié)果:
我是最幫的!!
學(xué)習(xí)文件寫入操作我是最幫的!!
學(xué)習(xí)文件寫入操作,加油!!!
File 對象的 close()方法刷新緩沖區(qū)里任何還沒寫入的信息,并關(guān)閉該文件,這之后便不能再進(jìn)行寫入。當(dāng)一個文件對象的引用被重新指定給另一個文件時,Python 會關(guān)閉之前的文件。用 close()方法關(guān)閉文件是一個很好的習(xí)慣。如果文件關(guān)閉后,還對文件進(jìn)行操作就會產(chǎn)生ValueError錯誤,但如果不及時關(guān)閉文件,有可能產(chǎn)生句
柄泄露,丟失數(shù)據(jù)
#打開文件準(zhǔn)備寫文件
結(jié)果:
文件名: test.txt
文件是否關(guān)閉: True
fileObject.flush()
該函數(shù)是將緩沖區(qū)中的內(nèi)容寫入硬盤
返回文件操作標(biāo)記的當(dāng)前位置,以文件的開頭為基準(zhǔn)點
結(jié)果:
當(dāng)前文件操作標(biāo)記位置為: 0
讀取一行后文件操作標(biāo)記位置為: 23
tell()方法告訴你文件內(nèi)的當(dāng)前位置;換句話說,下一次的讀寫會發(fā)生在文件開頭這么多字節(jié)之后。seek(offset [,from])這是一個文件定位函數(shù),該方法改變當(dāng)前文件的位置。 Offset變量表示要移動的字節(jié)數(shù)。From變量指定開始移動字節(jié)的參考位置。如果from被設(shè)為0(默認(rèn)值),這意味著將文件的開頭作為移動字節(jié)的參考位置。如果設(shè)為1,則使用當(dāng)前的位置作為參考位置。如果它被設(shè)為2,那么該文件的末尾將為參考位置。需要注意,如果文件以a或a+的模式打開,每次進(jìn)行寫操作時,文件操作標(biāo)記會自動返回到文件末尾。測試文件test.txt,內(nèi)容如下:
結(jié)果:
讀取的字符串是 : 我是最幫的!
當(dāng)前文件位置 : 18
重新讀取字符串 : 我是最幫的!
fileObject.truncate( [size] )
把文件裁成規(guī)定的大小,默認(rèn)的是裁到當(dāng)前文件操作標(biāo)記的位置。如果size比件的大小還要大,依據(jù)系統(tǒng)的不同可能是不改變文件,也可能是用0把文件補(bǔ)到相應(yīng)的大小,也可能是以一些隨機(jī)的內(nèi)容加上去。
- linecache
模塊允許從任何文件里得到任何的行,并且使用緩存進(jìn)行優(yōu)化,常見的情況是從單
個文件讀取多行。 - linecache.getlines(filename)
從名為 filename 的文件中得到全部內(nèi)容,輸出為列表格式,以文件每行為列表中的一個元素,
并以 linenum-1 為元素在列表中的位置存儲 - linecache.getline(filename,lineno)
從名為 filename 的文件中得到第 lineno 行。這個函數(shù)從不會拋出一個異常–產(chǎn)生錯誤時它將
返回”(換行符將包含在找到的行里)。
如果文件沒有找到,這個函數(shù)將會在 sys.path 搜索。 - linecache.clearcache()
清除緩存,如果你不再需要先前從 getline() 中得到的行 - linecache.checkcache(filename)
檢查緩存的有效性。如果在緩存中的文件在硬盤上發(fā)生了變化,并且你需要更新版本,使用
這個函數(shù),執(zhí)行此函數(shù)會講淘汰的內(nèi)容刪除。如果省略 filename,將檢查緩存里的所有條目。 - linecache.updatecache(filename)
更新文件名為 filename 的緩存。如果 filename 文件更新了,使用這個函數(shù)可以更新 -
linecache.getlines(filename)
返回的列表。如果出錯,則返回空列表。 - 刪除空行的方法
列題:
數(shù)據(jù)文件: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
end|success|resultcode = 0000
20160217000139|0|collect info job start|success|
20160217000143|0|collect info job
end|success|resultcode = 0000
數(shù)據(jù)分析需求:
每行內(nèi)容需要生成以每行
首年月日為名稱的文件,
文件內(nèi)容寫入|0|后的所有
行內(nèi)容(也包括|0| )
算法分析:
遍歷每一行,每行取頭8個字母
新建文件,文件名為首8個字母,然后把第15字符后的所有字
符拷貝到文件中
關(guān)閉文件
本文轉(zhuǎn)自 知止內(nèi)明 51CTO博客,原文鏈接:http://blog.51cto.com/357712148/2060672,如需轉(zhuǎn)載請自行聯(lián)系原作者
總結(jié)
以上是生活随笔為你收集整理的python文件操作二的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#基础回顾:GridView全选演示
- 下一篇: 亚信安全火力全开猎捕“坏兔子”,全歼详解