1. 程式人生 > 程式設計 >Python 實現檔案讀寫、座標定址、查詢替換功能

Python 實現檔案讀寫、座標定址、查詢替換功能

讀檔案

開啟檔案(檔案需要存在)

#開啟檔案
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 實現檔案讀寫、座標定址、查詢替換功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的。在此也非常感謝大家對我們網站的支援!
如果你覺得本文對你有幫助,歡迎轉載,煩請註明出處,謝謝!