Python內置函數之--open
阿新 • • 發佈:2017-08-13
python解釋器 adl return 函數 得到 讀取文件 末尾 表達 字符
open
1、open函數,該函數用於處理文件
2、open("文件名,模式(用什麽方式打開),編碼")
a、基本的打開方式
# 1、只讀,r f = open("ha.log","r") #2、只寫,w,[文件不可讀;文件不存在則創建;存在則清空內容] f = open("ha.log","w") f.write("123") f.close() #3、x, 只寫模式【不可讀;不存在則創建,存在則報錯】 f = open("ha1.log","x") f.write("456") f.close() #4、追加模式【不可讀;不存在則創建;存在則只追加內容;】f = open("ha1.log","a") f.write("666") f.close()
b、字節的方式打開
#1、只讀,rb f = open("ha.log","rb") data = f.read() f.close() print(type(data)) #2、只寫 f = open("ha.log","wb") f.write(bytes("中國",encoding="utf-8")) f.close()
c、區別:
#普通打開 #普通打開已經經過內部python操作,直接是UTF-8,rb方式則需要自己轉換 #===python內部將101010 => 轉換成字符串,通過字符串操作#010101 => python解釋器 => 程序員 #二進制打開方式 #rb方式打開只會得到2進制的代碼,需要自己轉換成utf-8
d、"+" 表示可以同時讀寫某個文件
# r+, 讀寫【可讀,可寫】 # w+, 寫讀【可讀,可寫】 # x+ ,寫讀【可讀,可寫】 # a+, 寫讀【可讀,可寫】
1、r+
# r,末尾追加,指針移動到最後 f = open("ha.log","r+",encoding="utf-8") #指針為0,起始位置 #f.close()
#從開始向後讀
#寫,追加,指針調到最後
2、w+,x+
#w+,先清空文件內容,再寫之後,就可以讀取 #先清空,之後寫的才能讀,寫,指針到最後 f = open("ha.log","w+",encoding="utf-8") f.write("吳文") f.seek(0)#指針指向0 data = f.read() f.close() print(data) #x+基本同上,如果文件存在,則報錯
3、a+
a+ a,打開的同時,指針已經到最後了,文件裏面的內容讀不到 #寫時,也會追加,指針放到最後 f = open("ha.log","a+",encoding="utf-8") data = f.read() f.close() print(data)
3、 文件的操作功能
#=============================== # f.tell()#獲取指針的位置 # f.seek(num)#調整指針的位置 #=============================== # close 關閉文件 # flush 強制刷新文件內部緩沖區 # read 讀取文件 # readline 讀取一行 # seek 文件中指針位置 # tell 獲取指針的位置 # truncate 截斷數據,僅保留指針指定之前數據 # write 讀取文件
4、讀取每一行的內容
f = open("ha.log","r",encoding="utf-8") for line in f: print(line) =>#f.readline,可以讀取所有行的內容
5、with open
#當with代碼塊執行完畢時,內部會自動關閉並釋放文件資源。 with open("ha.log","r") as f: f.read() #python內部會幫你關閉不用寫f.close
#同時打開2個文件 with open("log1","r") as boj1, open("log2","r") as obj2: pass #打開2個文件並進行傳送數據 with open("源文件","r") as obj1,open("新文件","w") as obj2: for line in obj1: obj2.write(line) #打開一個源文件,同時吧內容寫入一個新文件裏面
6、lambda表達式
#lambda可以代替簡單的函數 def f1(): return 123 f2 = lambda :123 def f3(a1,a2): return a1 + a2 f4 = lambda a1,a2: a1+a2 r1 = f1() print(r1) r2 = f2() print(r2)
Python內置函數之--open