python-文件基本操作(二)
?
在上一篇文章中,簡單介紹了打開文件的方法以及關于讀、寫、追加的操作,點擊此處查看。
在此篇文章中,繼續介紹另外一種打開文件的方法和幾種同時讀寫的模式。
?
一、打開文件方法:with
使用file()或open()打開文件時,最后一定要使用close()方法來關閉文件,為了避免忘記使用,還使用使用with的方法開打開文件,代碼如:
with open ('文件名','模式') as f:...其中,f為文件句柄,該打開文件的方式等同于f=open('文件名','模式')
此方法也可以一次打開多個文件,如:
with open ('文件名1','模式') as f1,open('文件名2','模式') as f2.....:...當文件過多時,會導致一行代碼過長的情況,因此推薦使用如下寫法:
with open ('文件名1','模式') as f1,\open ('文件名2','模式') as f2:...?
我們來使用closed()判斷文件是否關閉
?
二、幾種同時讀寫模式
在python中除了普通打開模式(r、w、a)外,還有幾種同時讀寫的模式,包括:
r+:讀寫,可讀可寫,若文件不存在,報錯
w+:寫讀,可讀可寫,創建新文件
a+:追加和讀,可讀可追加,若文件不存在,則創建
?
三、指針
為了便于理解同時讀寫模式,首先引入指針
有一個文件info.log ?文件內容如下:
①獲取文件句柄所在的指針tell()
例子:
>>> f=file('info.log','r') >>> print f.tell() #獲取初始時的指針 >>> print f.readline() #讀取文件第一行 >>> print f.tell() #獲取讀完第一行后的指針 >>> f.close() 0 #第一次指針的位置 aaaa 5 #第二次指針的位置?
②設置文件句柄所在的指針seek()
例子:
>>> f=file('info.log','r') >>> print f.tell() >>> print f.readline() >>> f.seek(3) #設置指針位置 >>> print f.tell() >>> f.close()?
四、讀寫:r+
代碼:
#使用r+打開文件時,不用read() >>> f=open('info.log','r+') >>> f.seek(5) #指針指向第二行 >>> print f.tell() >>> f.write('1111') >>> print f.tell() >>> f.close() 5 9文件結果:
?
注意:當使用r+打開文件時,如果使用了read(),那么不管指針在哪里,用write()方法時,新增的內容始終在文件結尾,除非在read()后重新指定了指針。如下:
>>> f=open('info.log','r+') >>> f.readline() #讀取文件第一行內容 >>> print f.tell() >>> f.write('1111') >>> print f.tell() >>> f.close() 5 25文件結果:
?
五、寫讀:w+
>>> f=open('info.log','w+') >>> print f.read() >>> f.write('1111\n') >>> f.write('2222') >>> print f.tell() >>> pring f.read() >>> f.seek(0) >>> print f.read() >>> f.close() #執行結果#由于是w+模式,因此會先覆蓋原文件內容,此時內容為空,print f.read() 結果為空 8 #兩次write()后,查看指針位置#此時指針處于文件末尾,pring f.read()的結果為空 11112222 #重新把指針指向文件開頭后,再print f.read(),有結果?
六、追加讀:a+
>>> f=open('info.log','a+') >>> print f.tell() >>> print f.read() >>> f.write('1111') >>> print f.tell() >>> print f.read() >>> f.seek(0) >>> print f.read() >>> f.close() #執行結果 21 #應為是a+模式打開,指針會指向文件結尾#指針在文件結果,因此print f.read()內容為空 25 #寫入內容后,查看指針位置#寫入內容后,指針還是在結尾,因此print f.read()內容還是為空 aaaa #重新定位指針后,print f.read()出的內容 bbbb ccccc dddd
?
轉載于:https://www.cnblogs.com/nizhihong/p/6545686.html
總結
以上是生活随笔為你收集整理的python-文件基本操作(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaScript ES2015
- 下一篇: 玩具谜题 未完成