Python 實現檔案讀寫、座標定址、查詢替換功能
阿新 • • 發佈:2020-01-09
讀檔案
開啟檔案(檔案需要存在)
#開啟檔案 f = open("data.txt","r") #設定檔案物件 print(f)#檔案控制代碼 f.close() #關閉檔案 #為了方便,避免忘記close掉這個檔案物件,可以用下面這種方式替代 with open('data.txt',"r") as f: #設定檔案物件 str = f.read() #可以是隨便對檔案的操作
完全讀取檔案
#完全讀取檔案 f = open("data.txt","r") #設定檔案物件 string1 = f.read() #將txt檔案的所有內容讀入到字串string1中 f.close() #將檔案關閉 print(string1)
按按行讀取整個檔案方法一(刪除回車)
#按行讀取整個檔案方法一(刪除回車) data = [] f = open("data.txt","r") #設定檔案物件 line = f.readline() if line !='\n' and line[len(line) -1 if len(line)-1>0 else 0] == "\n":#去掉換行符,也可以不去 line_ = line[:-1] data.append(line_) while line: #直到讀取完檔案 line = f.readline() #讀取一行檔案,包括換行符 if line !='' and line[len(line) -1 if len(line)-1>0 else 0] == "\n":#去掉換行符,也可以不去 line_ = line[:-1] data.append(line_) f.close() #關閉檔案 print(data)
按行讀取整個檔案方法一(不刪除回車)
#按行讀取整個檔案方法一(不刪除回車) data = [] f = open("data.txt","r") #設定檔案物件 line = f.readline() data.append(line) while line: #直到讀取完檔案 line = f.readline() #讀取一行檔案,包括換行符 if line !='': data.append(line) f.close() #關閉檔案 print(data)
按行讀取整個檔案第二種方法
#按行讀取整個檔案第二種方法 data = [] for line in open("data.txt","r"): #設定檔案物件並讀取每一行檔案 data.append(line) #將每一行檔案加入到list中 print(data )
按行讀取整個檔案第三種方法
f = open("data.txt","r") #設定檔案物件 data = f.readlines() #直接將檔案中按行讀到list裡,效果與方法2一樣 f.close() #關閉檔案 print(data)
將檔案讀入numpy陣列中
#將檔案讀入陣列中 import numpy as np data = np.loadtxt("data.txt") #將檔案中資料載入到data數組裡 print(data)
寫檔案列表寫入檔案
#列表寫入檔案(直接) data = ['a','b','c'] #單層列表寫入檔案 with open("data.txt","w") as f: f.writelines(data)
#列表寫入檔案(加入一些東西) data = ['a','c'] #單層列表寫入檔案 with open("data.txt","w") as f: for i in data: f.write(i+'\r\n')
#二維列表寫入檔案 data =[ ['a','c'],['a','c']] with open("data.txt","w") as f: #設定檔案物件 for i in data: i = str(i).strip('[').strip(']').replace(',','').replace('\'','').replace(' ',')+'\r\n' #將其中每一個列表規範化成字串 print(i) f.write(i)
#第二種方法,直接將每一項都寫入檔案 data =[ ['a',"w") as f: #設定檔案物件 for i in data: #對於雙層列表中的資料 f.writelines(i) #將陣列寫入檔案
import numpy as np data =[ [1,2,3],[4,5,6],[7,8,9]] # 第一種方法將陣列中資料寫入到data.txt檔案 np.savetxt("data1.txt",data) # 第二種方法將陣列中資料寫入到data.npy檔案 np.save("data",data) import numpy as np filename = 'data.txt' # txt檔案和當前指令碼在同一目錄下,所以不用寫具體路徑 dataele_list = [] with open(filename,'r') as f: while True: lines = f.readline() # 整行讀取資料 if not lines: break dataele_tmp = [float(i) for i in lines.split()] # 將整行資料分割處理,如果分割符是空格,括號裡就不用傳入引數,如果是逗號, 則傳入‘,'字元。 dataele_list.append(dataele_tmp) # 新增新讀取的資料 dataele_np = np.array(dataele_list) # 將資料從list型別轉換為array型別。 print(dataele_np)
非替換寫入
#非替換寫入 #r+ 模式的指標預設是在檔案的開頭 # 如果直接寫入,則會覆蓋原始檔,通過read() 讀取檔案後,指標會移到檔案的末尾,再寫入資料就不會有問題了。 # 這裡也可以使用a 模式 f2 = open('data.txt','r+') f2.read() f2.write('\r\nhello boy!') f2.close() #非替換寫入 f2 = open('data.txt','a') f2.write('\r\nhello fff!') f2.close()
檔案座標插入讀取
# 在開始使用open開啟檔案時候,將開啟方式從r,換成rb即可 才可以使用seek移動 f = open('data.txt','rb') #f.tell() #獲取指標位置 print("初始位置",f.tell()) # 開頭位置偏離3位置 f.seek(3,0) print("開頭位置偏離3位置",f.tell()) print("==",f.readline(),"==") print("讀取一行後位置",f.tell()) # 當前位置偏離5位置 f.seek(5,1) print("當前位置偏離5位置",f.tell()) # 結尾偏離5位置 f = open('data.txt','rb') f.seek(0,2) print("結尾偏離0位置",f.tell()) f.seek(3,2) print("結尾偏離3位置",f.tell())
內容查詢
# 內容查詢 import re f = open('data.txt') source = f.read() f.close() r = 'www' s = len(re.findall(r,source)) print(s) import re f = open("data.txt",'r') count = 0 for s in f.readlines(): li = re.findall("www",s) if len(li)>0: count = count + len(li) print ("Search",count,"www") f.close()
替換
#替換 f1 = open('data.txt','r') f2 = open('data2.txt','w') for s in f1.readlines(): f2.write(s.replace('www','w')+'\r\n') f1.close() f2.close()
#排序 去除空行 註釋 f = open('data.txt') result = list() for line in f.readlines(): # 逐行讀取資料 line = line.strip() #去掉每行頭尾空白 if not len(line) or line.startswith('#'): # 判斷是否是空行或註釋行 continue #是的話,跳過不處理 result.append(line) #儲存 f.close() result.sort() #排序結果 print(result) f = open('data2.txt','w') for line in result: f.write(line+'\r\n')
總結
以上所述是小編給大家介紹的Python 實現檔案讀寫、座標定址、查詢替換功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的。在此也非常感謝大家對我們網站的支援!
如果你覺得本文對你有幫助,歡迎轉載,煩請註明出處,謝謝!