文本文件
文件时数据的抽象和集合,由单一特定编码组成的文件,如UTF-8编码
二进制文件
直接由比特0和1组成,没有统一字符编码
文件处理的步骤:打开——操作——关闭
1. 打开
#<变量名> = open(<文件路径>,<打开模式>)
七种打开文件的模式
1.'r' #只读模式,如果文件不存在,返回FileNotFoundError,默认
2.'w' #覆盖写模式,文件不存在则创建,存在则完全覆盖
3.'x' #创建写模式,文件不存在则创建,存在则返回FileExistsError
4.'a' #追加写模式,文件不存在则创建,存在则在文件最后追加内容
5.'b' #二进制文件模式
6.'t' #文本文件模式,默认
7.'+' #与r/w/x/a一同使用,在原功能基础上增加同时读写功能
#文本形式只读模式打开文件
tf = open("f.txt","rt") #
print(tf.readline())
tf.close()
#二进制形式只读模式打开文件
bf = open("f.txt","rb")
print(bf.readline())
bf.close()
三个"读"方法
1.read(size) #每次读取整个文件size个字符 默认全部
2.readlines(hint) #一次读取前hint,然后将文件拆成多行,返回一个列表
3.readline() #读取一行返回一行
2.操作
# 遍历全文本的方法
#一、一次全部读入
fname = input("输入文件名称")
fo = open(fname,"r")
txt = fo.read()
#对全文txt进行处理
fo.close()
#二、利用loop每次读入一部分
fname = input("输入文件名称")
fo = open(fname,"r")
txt = fo.read(2)
while txt != "":
#对txt进行处理
txt = fo.read(2)
fo.close()
#逐行遍历
fname = input("输入文件名称")
fo = open(fname,"r")
for line in fo.readlines():
print(line)
fo.close()
3.文件写入
<f>.write(s) #向文件写入一个字符串或字节流
#例如 f.write("中国是一个伟大的国家")
<f>.writelines(lines) #将一个元素全为字符串的列表拼接后写入文件
#例如 ls = ["中国","法国","美国"] f.writelines(ls)
<f>.seek(offset) #改变当前文件操作指针的位置offset 0-文件开头 1-当前位置 2 - 文件结尾
# 例如
fo = open("output_fo.txt","w+")
ls = ["中国","法国","美国"]
fo.writelines(ls) #写完文件 文件指针在结尾
fo.seek(0) #要回到开头才可以打印
for line in fo: #按行输出
print(line)
fo.close()
实例:自动轨迹绘制
#使用Turtle自动轨迹绘制
#数据接口格式:
#长度 左0右1 角度 RGB颜色
import turtle as t
t.title("自动轨迹绘制")
t.setup(800,600,0,0)
t.pencolor("red")
t.pensize(5)
#数据读取
datals = [] #建立数据列表
f = open("data.txt")
for line in f:
line = line.replace("\n","")
datals.append(list(map(eval,line.split(",")))) #map作用:文本依据','分隔后 每一个元素都使用eval操作
f.close()
#自动绘制
for i in range(len(datals)):
t.pencolor(datals[i][3],datals[i][4],datals[i][5])
t.fd(datals[i][0])
if datals[i][1]:
t.right(datals[i][2])
else:
t.left(datals[i][2])
t.done()