讀文件
創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的城廂網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
打開(kāi)文件(文件需要存在)
#打開(kāi)文件
f = open("data.txt","r") #設(shè)置文件對(duì)象
print(f)#文件句柄
f.close() #關(guān)閉文件
#為了方便,避免忘記close掉這個(gè)文件對(duì)象,可以用下面這種方式替代
with open('data.txt',"r") as f: #設(shè)置文件對(duì)象
str = f.read() #可以是隨便對(duì)文件的操作
完全讀取文件
#完全讀取文件
f = open("data.txt","r") #設(shè)置文件對(duì)象
string1 = f.read() #將txt文件的所有內(nèi)容讀入到字符串string1中
f.close() #將文件關(guān)閉
print(string1)
按按行讀取整個(gè)文件方法一(刪除回車)
#按行讀取整個(gè)文件方法一(刪除回車)
data = []
f = open("data.txt","r") #設(shè)置文件對(duì)象
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() #關(guān)閉文件
print(data)
按行讀取整個(gè)文件方法一(不刪除回車)
#按行讀取整個(gè)文件方法一(不刪除回車)
data = []
f = open("data.txt","r") #設(shè)置文件對(duì)象
line = f.readline()
data.append(line)
while line: #直到讀取完文件
line = f.readline() #讀取一行文件,包括換行符
if line !='':
data.append(line)
f.close() #關(guān)閉文件
print(data)
按行讀取整個(gè)文件第二種方法
#按行讀取整個(gè)文件第二種方法
data = []
for line in open("data.txt","r"): #設(shè)置文件對(duì)象并讀取每一行文件
data.append(line) #將每一行文件加入到list中
print(data )
按行讀取整個(gè)文件第三種方法
f = open("data.txt","r") #設(shè)置文件對(duì)象
data = f.readlines() #直接將文件中按行讀到list里,效果與方法2一樣
f.close() #關(guān)閉文件
print(data)
將文件讀入numpy數(shù)組中
#將文件讀入數(shù)組中
import numpy as np
data = np.loadtxt("data.txt") #將文件中數(shù)據(jù)加載到data數(shù)組里
print(data)
寫(xiě)文件
列表寫(xiě)入文件
#列表寫(xiě)入文件(直接)
data = ['a','b','c']
#單層列表寫(xiě)入文件
with open("data.txt","w") as f:
f.writelines(data)
#列表寫(xiě)入文件(加入一些東西)
data = ['a','b','c']
#單層列表寫(xiě)入文件
with open("data.txt","w") as f:
for i in data:
f.write(i+'\r\n')
#二維列表寫(xiě)入文件
data =[ ['a','b','c'],['a','b','c'],['a','b','c']]
with open("data.txt","w") as f: #設(shè)置文件對(duì)象
for i in data:
i = str(i).strip('[').strip(']').replace(',','').replace('\'','').replace(' ',',')+'\r\n' #將其中每一個(gè)列表規(guī)范化成字符串
print(i)
f.write(i)
#第二種方法,直接將每一項(xiàng)都寫(xiě)入文件
data =[ ['a','b','c'],['a','b','c'],['a','b','c']]
with open("data.txt","w") as f: #設(shè)置文件對(duì)象
for i in data: #對(duì)于雙層列表中的數(shù)據(jù)
f.writelines(i)
#將數(shù)組寫(xiě)入文件
import numpy as np
data =[ [1,2,3],[4,5,6],[7,8,9]]
# 第一種方法將數(shù)組中數(shù)據(jù)寫(xiě)入到data.txt文件
np.savetxt("data1.txt",data)
# 第二種方法將數(shù)組中數(shù)據(jù)寫(xiě)入到data.npy文件
np.save("data",data)
import numpy as np
filename = 'data.txt' # txt文件和當(dāng)前腳本在同一目錄下,所以不用寫(xiě)具體路徑
dataele_list = []
with open(filename, 'r') as f:
while True:
lines = f.readline() # 整行讀取數(shù)據(jù)
if not lines:
break
dataele_tmp = [float(i) for i in lines.split()] # 將整行數(shù)據(jù)分割處理,如果分割符是空格,括號(hào)里就不用傳入?yún)?shù),如果是逗號(hào), 則傳入‘,'字符。
dataele_list.append(dataele_tmp) # 添加新讀取的數(shù)據(jù)
dataele_np = np.array(dataele_list) # 將數(shù)據(jù)從list類型轉(zhuǎn)換為array類型。
print(dataele_np)
非替換寫(xiě)入
#非替換寫(xiě)入
#r+ 模式的指針默認(rèn)是在文件的開(kāi)頭
# 如果直接寫(xiě)入,則會(huì)覆蓋源文件,通過(guò)read() 讀取文件后,指針會(huì)移到文件的末尾,再寫(xiě)入數(shù)據(jù)就不會(huì)有問(wèn)題了。
# 這里也可以使用a 模式
f2 = open('data.txt','r+')
f2.read()
f2.write('\r\nhello boy!')
f2.close()
#非替換寫(xiě)入
f2 = open('data.txt','a')
f2.write('\r\nhello fff!')
f2.close()無(wú)錫人流醫(yī)院 http://www.bhnkyy39.com/
文件坐標(biāo)插入讀取
# 在開(kāi)始使用open打開(kāi)文件時(shí)候,將打開(kāi)方式從r,換成rb即可 才可以使用seek移動(dòng)
f = open('data.txt','rb')
#f.tell() #獲取指針位置
print("初始位置",f.tell())
# 開(kāi)頭位置偏離3位置
f.seek(3,0)
print("開(kāi)頭位置偏離3位置",f.tell())
print("==",f.readline(),"==")
print("讀取一行后位置",f.tell())
# 當(dāng)前位置偏離5位置
f.seek(5,1)
print("當(dāng)前位置偏離5位置",f.tell())
print("==",f.readline(),"==")
print("讀取一行后位置",f.tell())
# 結(jié)尾偏離5位置
f = open('data.txt','rb')
f.seek(0,2)
print("結(jié)尾偏離0位置",f.tell())
print("==",f.readline(),"==")
print("讀取一行后位置",f.tell())
f.seek(3,2)
print("結(jié)尾偏離3位置",f.tell())
print("==",f.readline(),"==")
print("讀取一行后位置",f.tell())
內(nèi)容查找
# 內(nèi)容查找
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(): # 逐行讀取數(shù)據(jù)
line = line.strip() #去掉每行頭尾空白
if not len(line) or line.startswith('#'): # 判斷是否是空行或注釋行
continue #是的話,跳過(guò)不處理
result.append(line) #保存
f.close()
result.sort() #排序結(jié)果
print(result)
f = open('data2.txt','w')
for line in result:
f.write(line+'\r\n')