1、 Python读取txt文件函数
read()、readline()、readlines()
read() 一次性读全部内容 一次性读取文本中全部的内容,以字符串的形式返回结果
with open("test.txt", "r") as f:
data = f.read()
print(data)
readline() 读取第一行内容 只读取文本第一行的内容,以字符串的形式返回结果
with open("test.txt", "r") as f:
data = f.readline()
print(data)
readlines() 列表 读取文本所有内容,并且以数列的格式返回结果,一般配合for in使用
with open("test.txt", "r") as f:
data = f.readlines()
print(data)
readlines会读到换行符,可用如下方法去除:
with open("test.txt", "r") as f:
for line in f.readlines():
line = line.strip('\n')
print(line)
2、写入txt文本
with open("test.txt","w") as f:
f.write("这是个测试!")
3、读写模式
要了解文件读写模式,需要了解几种模式的区别,以及对应指针
r : 读取文件,若文件不存在则会报错
w: 写入文件,若文件不存在则会先创建再写入,会覆盖原文件
a : 写入文件,若文件不存在则会先创建再写入,但不会覆盖原文件,而是追加在文件末尾
rb,wb: 分别于r,w类似,但是用于读写二进制文件
r+ : 可读、可写,文件不存在也会报错,写操作时会覆盖
w+ : 可读,可写,文件不存在先创建,会覆盖
a+ : 可读、可写,文件不存在先创建,不会覆盖,追加在末尾
4、常用的几个函数
(1)strip
Python strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。 注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。
语法:
str.strip([chars]);
实例:
str = "00000003210Runoob01230000000";
print str.strip( '0' );
str2 = " Runoob ";
print str2.strip();
输出:
3210Runoob0123
Runoob
(2)split
split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串
语法:
str.split(str="", num=string.count(str)).
参数:
str -- 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
num -- 分割次数。默认为 -1, 即分隔所有。
实例:
str = "Line1-abcdef \nLine2-abc \nLine4-abcd";
print(str.split( )); # 以空格为分隔符,包含 \n
print(str.split(' ', 1 )); # 以空格为分隔符,分隔成两个
输出:
['Line1-abcdef', 'Line2-abc', 'Line4-abcd']
['Line1-abcdef', '\nLine2-abc \nLine4-abcd']
5 重要例子
将全班同学成绩进行排名,将成绩低于60分和高于60分分别排名
def read(fileName):
st = []
f = open(fileName,'r',encoding='utf-8')
rows = f.readlines()
for row in rows:
s = row.strip("\n").split(" ")
if len(s)==2:
d = {"Name":s[0],"Score":str(s[1])}
st.append(d)
return st
def sort(st):
print(st)
for i in range(len(st)):
for j in range(i+1,len(st)):
if st[i]["Score"] < st[j]["Score"]:
temp = st[i]
st[i] = st[j]
st[j] = temp
return st
def save(st):
f = open("../successorted.txt",'w')
f2 = open("../failsorted.txt",'w')
for i in range(len(st)):
if st[i]["Score"] < '60':
f.write(st[i]['Name'] + " " + str(st[i]["Score"]) + "\n")
else:
f2.write(st[i]['Name'] + " " + str(st[i]["Score"]) + "\n")
if __name__ == '__main__':
fileName = "scores.txt"
st = read(fileName)
st = sort(st)
save(st)
查漏补缺
st为读取txt的列表,可以通过st[i]["Name"]的方式进行定位。
|