目录
一、文件读取
保存信息到文件,命名
流程:打开文件,操作,关闭文件
tf = open("sanguo.txt","rt") #源文件同路径打开,rb为二进制格式打开
print(tf.readline()) #输出第一行文本文件
print(bf.readline()) #输出第一行二进制文件
tf.close() #关闭对文件的占用
1.'gbk'报错问题
UnicodeDecodeError: 'gbk' codec can't decode byte 0xad in position 52: illegal multibyte sequence
需要在代码行后添加:encoding='UTF-8'
f = open("C:/Users/hp/AppData/Local/Programs/Python/Python310/pythoneg/f.txt",'rt',encoding='UTF-8')
2. open(文件名,打开模式)
打开模式的方式和作用
open()中文件名绝对路径:D:/python/f.txt or D:\\python\\f.txt
相对路径(从当前目录出发):./python/f.txt
3.文件的读取
tf.read(2):读入前2个字
tf.readline(s):读入前s行,以每行为元素形成列表
一次读入,统一按照字符串处理
fname = input("输入读取文件名称:")
fo = open(fname,"r")
txt = fo.read() #把整个文本读进来,存为txt
fo.close()
分段处理:
fname = input("输入读取文件名称:")
fo = open(fname,"r")
txt = fo.read(2)
while txt != "":
txt = fo.read(2) #一次读2个字
fo.close()
一次读入,分行处理:
fname = input("输入读取文件名称:")
fo = open(fname,"r")
for line in fo.readlines():
print(line)
fo.close()
分行读入,逐行处理:
fname = input("输入读取文件名称:")
fo = open(fname,"r")
for line in fo:
print(line)
fo.close()
注意:这里是for i in f: #这里没有括号
二、文件的写入
1.覆盖写
2.追加写
3.创建写
4.拼接列表进行写入f.writelines(ls)
5.文件操作指针
.seek():指针想象为移动光标
fname = input("输入读取文件名称:")
fo = open(fname,"w+")
ls = ["你","我","他"]
fo.writelines(ls)
fo.seek(0) #把光标移到前面,光标如果在后面运行的话没有输出
for line in fo:
print(line)
fo.close()
三、文件读写应用案例:自动描绘
数据接口:行进距离,颜色,方向
思维:数据和功能分离,数据驱动系统自动运行
数据结构:二维数据应用最为广泛
import turtle as t
t.title("autopaint")
t.setup(800,600,0,0)
t.pensize(5)
t.pencolor("red")
#数据读取
datals = []
f = open("data.txt")
for line in f:
line = line.replace("\n","")
datals.append(list(map(eval,line.split(","))))
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])