Python文件讀寫之r+/w+/a+


讀模式 r 打開不存在的文件會報錯、不能寫;如不指定模式則默認是r
寫模式 w 打開不存在的文件會,會新建一個文件;打開存在的文件會先清空后覆蓋原有文件;不能讀
追加模式 a 打開不存在的文件會,會新建一個文件;不能讀

 

讀寫模式 r+ 能寫,打開不存在的文件會報錯
寫讀模式 w+ 能讀,但是讀不到內容,因為w先把文件內容清空了
追加讀模式 a+ 能讀,但讀不到內容,因為文件指針默認在最后一行,可用seek移動文件指針位置

1. r+讀寫模式

 
# r+讀寫模式
f=open('test.txt','r+')
res=f.write('000\n')
res1=f.read()
print(res1)

# 原test.txt內容如下:
# 123456
# 678
# 789

#print輸出讀取的內容如下:
# 6
# 678
# 789

#現test.txt內容如下:
# 000
# 6
# 678
# 789

##解釋說明:
#1. r+新寫入的內容會覆蓋原文件中的內容,寫入幾個字符,則覆蓋幾個字符
#2. r+會從文件開頭開始進行文件讀寫,所以每次寫入時,都會從一開始(第一行)進行
#3. \n換行符相當於兩個字符
#4. r+寫完后,文件指針會停留在新寫入的字符后面,所以在read時,只read新寫入字符后面的那些內容
#5. 綜上所述,新寫入的000\n會覆蓋原文件中的前5個字符,且read后顯示的內容不包含新寫入的內容
 

 

2. w+寫讀模式

 
# w+寫讀模式
f=open('test.txt','w+')
res=f.write('000\n')
res1=f.read()
print(res1)

# 原test.txt內容如下:
# 123456
# 678
# 789

#print輸出讀取的內容如下:#空,能讀,但是讀不到內容,因為w+先把文件內容清空了


#現test.txt內容如下:
# 000
# 

##解釋說明:
#1. w+會先清空然后覆蓋原文件內容
#2. w+會先將文件里的所有內容都清空,所以讀不到任何內容
 

 

3. a+追加讀模式

 
# a+讀寫模式
f=open('test.txt','a+')
res=f.write('000\n')
res1=f.read()
print(res1)

# 原test.txt內容如下:
# 123456
# 678
# 789

#print輸出讀取的內容如下:#空,能讀,但讀不到內容,因為文件指針默認在最后一行,用seek移動文件指針位置



#現test.txt內容如下:
# 123456
# 678
# 78900
#  

##解釋說明:
#1. a+因為文件指針默認在最后一行字符后,所以寫入新字符時,新寫入的字符會顯示在最后
#2. a+能讀,但因為文件指針默認在最后一行,所以讀不到內容,顯示空
#3. a+可以用seek()移動文件指針位置進行文件的讀取
 

3-1:a+中seek()的運用:在讀取文件時,可指定下標從而實現從第幾位開始讀取文件內容;

注:只針對讀取文件,寫文件還是只能從最后開始寫

 
f=open('test.txt','a+')
f.seek(5)  #此處的seek不起作用,因為對寫文件不起作用
res=f.write('hh\n')
f.seek(2)  #從下標是2的字符開始讀取文件
res1=f.read()
print(res1)

# 原test.txt內容如下:
# 123456
# 678
# 789

#print輸出讀取的內容如下:
# 3456
# 678
# 789hh
#  

#現test.txt內容如下:
# 123456
# 678
# 789hh
#  
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM