文本的读取函数
python常用的读取文件函数有三种read()、readline()、readlines()
文件的打开方式
# 不推荐:常规打开方式
f = open("data.txt","r") #设置文件对象
f.close() #关闭文件
# 推荐:一次性读取文本中全部的内容,以字符串的形式返回结果
with open('data.txt',"r") as f: #设置文件对象
str = f.read() #可以是随便对文件的操作
按行读取整个文件
#第一种方法
f = open("data.txt","r") #设置文件对象
line = f.readline()
line = line[:-1]
while line: #直到读取完文件
line = f.readline() #读取一行文件,包括换行符
line = line[:-1] #去掉换行符,也可以不去
f.close() #关闭文件
#第二种方法
data = []
for line in open("data.txt","r"): #设置文件对象并读取每一行文件
data.append(line) #将每一行文件加入到list中
#第三种方法
f = open("data.txt","r") #设置文件对象
data = f.readlines() #直接将文件中按行读到list里,效果与方法2一样
f.close() #关闭文件
#读取第一行内容
with open("test.txt", "r") as f: #只读取文本第一行的内容,以字符串的形式返回结果
data = f.readline()
print(data)
#列表方式读取文件
with open("test.txt", "r") as f: #读取文本所有内容,并且以数列的格式返回结果,一般配合for in使用
data = f.readlines()
print(data)
#列表方式读取文件并去除换行符
with open("test.txt", "r") as f:
for line in f.readlines():
line = line.strip('\n') #去掉列表中每一个元素的换行符
print(line)
#大文件读取推荐
with open("test.txt") as f:
for line in f:
line.split("|")
print(line)
#指定条件查询返回整行
banks = open('test.txt', 'r', encoding='utf-8')
lines = banks.readlines()
for line in lines:
line = line.strip()
if 'str' in line: #str关键字查询
print(line)
将文件读入数组中
import numpy as np
data = np.loadtxt("data.txt") #将文件中数据加载到data数组里
写入txt文本
with open('data.txt','w') as f: #设置文件对象
f.write('Hi,我是辣辣.') #将字符串写入文件中
写入单层列表
data = ['a','b','c']
#单层列表写入文件
with open("data.txt","w") as f:
f.writelines(data)
写入多层列表
#双层列表写入文件
#第一种方法,每一项用空格隔开,一个列表是一行写入文件
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('\'','')+'\n' #将其中每一个列表规范化成字符串
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
#第一种方法
np.savetxt("data.txt",data) #将数组中数据写入到data.txt文件
#第二种方法
np.save("data.txt",data) #将数组中数据写入到data.txt文件
文件读写模式
要了解文件读写模式,需要了解几种模式的区别,以及对应指针
r : 读取文件,若文件不存在则会报错
w: 写入文件,若文件不存在则会先创建再写入,会覆盖原文件
a : 写入文件,若文件不存在则会先创建再写入,但不会覆盖原文件,而是追加在文件末尾
rb,wb: 分别于r,w类似,但是用于读写二进制文件
r+ : 可读、可写,文件不存在也会报错,写操作时会覆盖
w+ : 可读,可写,文件不存在先创建,会覆盖
a+ : 可读、可写,文件不存在先创建,不会覆盖,追加在末尾