python history文件_【python之路19】文件操作
一、打開文件
文件句柄 = open('文件路徑', '模式')
打開文件時,需要指定文件路徑和以何等方式打開文件,打開后,即可獲取該文件句柄,日后通過此文件句柄對該文件操作。
打開文件的模式有:
r ,只讀模式【默認】
w,只寫模式【不可讀;不存在則創建;存在則清空內容;】
x, 只寫模式【不可讀;不存在則創建,存在則報錯】
a, 追加模式【可讀; ? 不存在則創建;存在則只追加內容;】
#!usr/bin/env python#-*- coding:utf-8 -*-
f = open('history.log','r') #以只讀模式打開文件
data = f.read() #讀取內容并賦值給data
f.close()print(data)
#!usr/bin/env python#-*- coding:utf-8 -*-
f = open('history1.log','w',encoding='utf-8') #以只寫模式打開文件,因為找不到文件,此時會創建history1.log
data = f.write('你好') #讀取內容并賦值給data
f.close()
"+" 表示可以同時讀寫某個文件
r+, 讀寫【可讀,可寫】
w+,寫讀【可讀,可寫】
x+ ,寫讀【可讀,可寫】
a+, 寫讀【可讀,可寫】
"b"表示以字節的方式操作
rb ?或 r+b
wb 或 w+b
xb?或 w+b
ab?或 a+b
注:以b方式打開時,讀取到的內容是字節類型,寫入時也需要提供字節類型
可以用seek()和 tell()函數進行測試各個打開方式的不同,兩個函數分別是:移動指針的位置、返回當前指針位置
1、r+的打開方式總結:
1)打開文件時,原文件中的內容不變
2)打開文件后,指針默認的位置處于0,此時寫入數據從開始寫入,覆蓋后面的數據,如果是讀取數據是從開始讀取
3)可以讀也可以寫
4)只要讀一次,不管讀幾個字符,寫入的時候就會在尾部進行追加數據。所以讀取數據后要想從開頭或中間寫入數據,需要用seek()改變指針位置。
f = open('history1.log','r+',encoding='utf-8') #history1中的內容為:hello,what is your name
print(f.tell()) #文件中的內容未變,返回0。說明:打開文件后當前指針為0的位置
data =f.read()print(data) #返回:hello,what is your name說明默認從0的位置讀到末尾,此時指針在最后
f.write("my name is sunshuhai") #文件中的內容變為:hello,what is your namemy name is sunshuhai
f.close
2、w+的打開方式總結
1)如果文件存在,則打開原文件,并把原文件內容清空;如果文件不存在,則建立該空文件
2)指針指向0
3)寫入后可以進行讀取,需要用seek()移動指針的位置才能讀取
f = open('history1.log','w+',encoding='utf-8') #history1中的內容為:hello,what is your name
print(f.tell()) #打開時文件中的內容被清空,此時指針處于0位置
f1= open('history2.log','w+',encoding='utf-8') #history2不存在該文件,運行代碼后會自動創建history2.log文件
3、x+的打開方式總結
1)如果文件已經存在則報錯,如果文件不存在則會創建新的文件
2)寫入后可以進行讀取,寫入后指針處于最后,需要用seek()移動指針的位置才能讀取
f = open('history1.log','x+',encoding='utf-8') #history1中的內容為:hello,what is your name
print(f.tell())
f.close()#報錯,因為文件已經存在
f1 = open('history3.log','x+',encoding='utf-8') #history3不存在該文件,運行代碼后會自動創建history3.log文件
4、a+的打開方式總結
1)如果文件已經存在則打開,如果不存在則創建
2)打開后原來的文件內容不變
3)默認的指針位置在最后
4)可以進行讀和寫
f = open('history1.log','a+',encoding='utf-8') #不存在則創建,存在則打開,此時history1.log中的內容為hello,what is your name
print(f.tell()) #返回23,說明:追加模式打開,指針會默認移到最后
data =f.read()print(data) #返回空,因為指針在最后,所以讀取不到數據
f.write('你好') #此時內容為:hello,what is your name你好
f.close()
二、文件操作的主要功能函數
f = open('history1.log','r+',encoding='utf-8')
f.close()#關閉文件
f.flush() #在文件關閉前,就把寫入的內容刷到硬盤
f.read(n) #默認則讀取文件的全部內容,加參數則讀取前幾個字符(如果以b的方式打開則讀取幾個字節)
f.readline() #按行讀取,默認讀取當前指針所在的行
f.seek(n) #調整指針的位置,把指針放在n個字節處
f.tell() #獲取指針的位置
f.truncate() #截取開始至當前指針位置中的內容,其他內容則刪除
f.write() #向文件中寫入內容
seek(0)表示移動到開頭,移動到結尾: seek(0,2) seek的第?個參數表?的是從哪個位置進?偏移, 默認是0, 表 ?開頭, 1表?當前位置, 2表?結尾
f.readlines() #把所有的行讀入列表中,如果文件中的行數很多,內存消耗會很大,適應于行數較少的問件
f.xreadline() #2.x系列才有,生成文件每行的迭代器,相當于for i in f:
for循環打印輸出文件的每一行:
f = open('history2.log','r+',encoding='utf-8')for line inf:print(line) #循環打印輸出每一行
三、with文件打開方式
用with打開文件,with會自動給關閉,無需用f.close()
用with可以同時打開兩個文件
with open('history2.log','r+',encoding='utf-8') as f:
data=f.read()print(data)#最后無需f.close(),with語句會自動給關閉文件
#python2.7及以后版本支持同時打開多個文件
with open('history1.log','r+',encoding='utf-8') as f1,open('history2.log','r',encoding='utf-8') as f2:print(f1.read())print(f2.read())
總結
以上是生活随笔為你收集整理的python history文件_【python之路19】文件操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java实现语音发送,Java实现发送手
- 下一篇: python3 image_python