python文件操作
w 只能操作寫入 r 只能讀取 a向文件追加
wb 只能操作寫入進制數據 rb 只能讀取進制數據 ab向文件追加進制數據
w+ (先清除在寫)可寫可讀 r+(先讀再寫)可讀可寫 a+ 可讀可寫
wb+ 可寫入進制數據
如果用r模式 文件必須存在,不然報錯
w模式打開文件,如果文件中有數據,再次寫入內容,會把原來的覆蓋掉
文件不能修改
1 #打開文件,打開方式utf-8(沒有賦變量,無法後續操作) 2 data=open("yesterday",encoding="utf-8").read()#相對路徑打開 3 4 #只讀 5 f=open("yesterday",'r',encoding="utf-8")#bytes-->str 6 可讀取非文字文件 7 f = open("yesterday",'rb')#即 binary mode,read()操作返回的是bytes 8 9 # 只寫 10 #對於w:沒有此文件就會創建文件 11 # f = open('log',mode='w',encoding='utf-8') 12 # f.write('騎兵步兵') 13 # f.close() 14 # 先將源文件的內容全部清除,在寫。 15 # f = open('log',mode='w',encoding='utf-8') 16 # f.write('附近看到類似糾紛') 17 # f.close() 18 # f = open('log', mode='wb') 19 # f.write('附近看到類似糾紛'.encode('utf-8'))#用utf-8編碼方式寫入 20 # f.close() 21 # (先清除在寫)可寫可讀 22 # f = open('log',mode='w+',encoding='utf-8') 23 # f.write('aaa') 24 # f.seek(0) 25 # print(f.read()) 26 # f.close() 27 28 #只追加 29 # f = open('log',mode='a',encoding='utf-8') 30 # f.write('佳琪') 31 # f.close() 32 # f = open('log',mode='ab') 33 # f.write('佳琪'.encode('utf-8')) 34 # f.close() 35 36 # 可讀可寫 37 # f = open('log',mode='a+',encoding='utf-8') 38 # f.write('佳琪') 39 # f.seek(0)#重置光標位置 40 # print(f.read()) 41 # f.close() 42 43 # 讀寫 44 # f = open('log',mode='r+',encoding='utf-8') 45 # print(f.read()) 46 # f.close() 47 48 49 50 #文件句柄 51 f=open("yesterday2",'w',encoding="utf-8") 52 #data=f.read()#讀取(光標移到了最後一行,無法再讀取) 53 f.write("哈哈真好玩,\n")#寫入 54 f.write("那必須的。") 55 f.close() 56 """ 57 #for i in range(5): 58 # print(f.readline())#讀取一行 59 #for line in f.readlines():#f.readlines結果是一個列表 60 # print(line)
循環
1 #讀取整個文件後循環(佔內存) 2 for index,line in enumerate(f.readlines()) 3 if index==9: 4 print("---分割---") 5 continue 6 print(line) 7 """ 8 """ 9 #只循環當前一行 10 count=0 11 for index in f: 12 if count==9: 13 print("------分割線-------") 14 count += 1 15 continue 16 print(index.strip()) 17 count+=1 18 19 with open("yesterday2",'w',encoding="utf-8") as ff:#和open()一樣,但無需close() 20 #with open("yesterday2",'r',encoding="utf-8") as ff,\ 21 open("yesterday",'a',encoding="utf-8") as fff: 22 print(ff.read())
函數
f = open('log',mode='a',encoding='utf-8')#log文件名 # print(f.tell())#讀取光標位置(按字節找) # print(f.read(30))#讀字符 # print(f.tell()) # f.seek(0)#重置光標位置(按字節找) # print(f.tell()) # f.readable()#判斷是否可讀 # f.readline()#一行一行的讀 # f.readlines()#每一行當成列表中的元素,添加到列表中 # f.truncate(5)#對原文件進行截取,其餘刪除
文件“修改”
1 #文件假修改(原文件->str(修改)->新文件->原文件刪除) 2 with open('log',encoding='utf-8') as f,open('log.bak','w',encoding='utf-8') as f2: 3 for line in f: 4 if "佳琪" in line: 5 line=line.replace('佳琪','琪琪') 6 f2.write(line) 7 import os 8 os.remove('log')#刪除 9 os.rename('log.bak','log')#重命名