0011-python第十天:文件读写常用方法

这篇博客详细介绍了Python中文件的读取和写入操作,包括解决'gbk'编码问题,各种打开模式的使用,读取文件的多种方法,如读取指定字数、按行读取等。此外,还探讨了文件的写入方式,如覆盖写、追加写、创建写,并讲解了如何使用writelines()函数拼接列表写入。最后,通过一个自动描绘的应用案例展示了文件读写在实际问题中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、文件读取

​1.'gbk'报错问题

2. open(文件名,打开模式)

3.文件的读取

二、文件的写入 

1.覆盖写

​ 2.追加写

3.创建写

4.拼接列表进行写入f.writelines(ls)

5.文件操作指针

三、文件读写应用案例:自动描绘


一、文件读取

保存信息到文件,命名

流程:打开文件,操作,关闭文件

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])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值