PYTHON 文件读写、坐标寻址、查找替换
读文件
打开文件(文件需要存在)
f = open("data.txt","r")
print(f)
f.close()
with open('data.txt',"r") as f:
str = f.read()
完全读取文件
f = open("data.txt","r")
string1 = f.read()
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)
print(data )
按行读取整个文件第三种方法
f = open("data.txt","r")
data = f.readlines()
f.close()
print(data)
将文件读入 numpy 数组中
import numpy as np
data = np.loadtxt("data.txt")
print(data)
写文件
列表写入文件
data = ['a','b','c']
with open("data.txt","w") as f:
f.writelines(data)
data = ['a','b','c']
with open("data.txt","w") as f:
for i in data:
f.write(i+'\r\n')
data =[ ['a','b','c'],['a','b','c'],['a','b','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','b','c'],['a','b','c'],['a','b','c']]
with open("data.txt","w") as f:
for i in data:
f.writelines(i)
import numpy as np
data =[ [1,2,3],[4,5,6],[7,8,9]]
np.savetxt("data1.txt",data)
np.save("data",data)
import numpy as np
filename = 'data.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)
print(dataele_np)
非替换写入
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()
文件坐标插入读取
f = open('data.txt','rb')
print("初始位置",f.tell())
f.seek(3,0)
print("开头位置偏离3位置",f.tell())
print("==",f.readline(),"==")
print("读取一行后位置",f.tell())
f.seek(5,1)
print("当前位置偏离5位置",f.tell())
print("==",f.readline(),"==")
print("读取一行后位置",f.tell())
f = open('data.txt','rb')
f.seek(0,2)
print("结尾偏离0位置",f.tell())
print("==",f.readline(),"==")
print("读取一行后位置",f.tell())
f.seek(3,2)
print("结尾偏离3位置",f.tell())
print("==",f.readline(),"==")
print("读取一行后位置",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')
写得很全呀