Python学习之文件的使用和自动轨迹绘制实例(十四)

文件的使用

文件的类型

文件的理解

文件是数据的抽象和集合

  • 文件是存储在辅助存储器上的数据序列
  • 文件是数据存储的一种形式
  • 文件展现形态:文本文件和二进制文件

文本文件 vs 二进制文件

  • 文件文件和二进制文件只是文件的展示方式
  • 本质上,所有文件都是二进制形式存储
  • 形式上,所有文件采用两种方式展示

文本文件

文件是数据的抽象和集合

  • 由单一特定编码组成的文件,如UTF-8编码
  • 由于存在编码,也被看成是存储着的长字符串
  • 适用于例如:.txt文件、.py文件

二进制文件

文件是数据的抽象和集合

  • 直接由比特0和1组成,没有统一字符编码
  • 一般存在二进制0和1的组织结构,即文件格式
  • 适用于例如:.png文件、.avi文件等

文本文件 vs 二进制文件

f.txt文件中保存“中国是个伟大的国家!”

#文本形式打开文件
tf = open("f.txt", "rt", encoding = 'utf-8')
print(tf.readline())
tf.close()

中国是个伟大的国家!
#二进制形式打开文件
bf = open("f.txt", "rb")
print(bf.readline())
bf.close()

b'\xe4\xb8\xad\xe5\x9b\xbd\xe6\x98\xaf\xe4\xb8\xaa\xe4\xbc\x9f\xe5\xa4\xa7\xe7\x9a\x84\xe5\x9b\xbd\xe5\xae\xb6!'

文件的打开和关闭

文件的打开

在这里插入图片描述

由于在Python中/为转义符,所以文件的路径和名称需要更改(前者为绝对路径,后者为相对路径)

在这里插入图片描述

打开模式

在这里插入图片描述在这里插入图片描述

文件的关闭

在这里插入图片描述

文件的使用

f.txt文件中保存“中国是个伟大的国家!”

#文本形式打开文件
tf = open("f.txt", "rt", encoding = 'utf-8')
print(tf.readline())
tf.close()

中国是个伟大的国家!
#二进制形式打开文件
bf = open("f.txt", "rb")
print(bf.readline())
bf.close()

b'\xe4\xb8\xad\xe5\x9b\xbd\xe6\x98\xaf\xe4\xb8\xaa\xe4\xbc\x9f\xe5\xa4\xa7\xe7\x9a\x84\xe5\x9b\xbd\xe5\xae\xb6!'

文件内容的获取

3个文件内容获取的方法

在这里插入图片描述在这里插入图片描述

文件的全文本操作

遍历全文本:方法一(一次读入,统一处理)

fname = input("请输入要打开的文件名称:")
fo = open(fname,"r", encoding = 'utf-8')
txt = fo.read()
#对全文txt进行处理
fo.close()

遍历全文本:方法二(按数量读入,逐步处理)

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",encoding='utf-8')
for line in fo.readlines():
    print(line)
    print(type(line))
fo.close()

逐行遍历文件:方法一(分行读入,逐行处理)

fname = input("请输入要打开的文件名:")
fo = open(fname,"r",encoding='utf8')
for line in fo:
    print(line)
    print(type(line))
fo.close()

数据的文件写入

3个数据文件写入的方法

在这里插入图片描述在这里插入图片描述

示例

fo = open("output.txt","w+")
ls = ["中国","美国","英国"]
fo.writelines(ls)
print(type(fo))
fo.seek(0) # 写入ls之后,将指针返到文件的最开始,并且从这个地方开始去进行文件的全文的遍历打印
for line in fo:
    print(line)
fo.close()

中国美国英国

注意事项:注意文件操作过程中指针所在位置及程序的影响

自动轨迹绘制

自动轨迹绘制问题分析

自动轨迹绘制

  • 需求:根据脚本来绘制图形
  • 不是写代码而是写数据绘制轨迹
  • 数据脚本是自动化最重要的第一步

基本思路

  • 步骤1:定义数据文件格式( 接口 )
  • 步骤2:编写程序,根据文件接口解析参数绘制图形
  • 步骤3:编制数据文件

自动轨迹绘制实例讲解

数据接口定义

每个人的定义都不同

在这里插入图片描述

实例

创建一个data.txt

300,0,144,1,0,0
300,0,144,0,1,0
300,0,144,0,0,1
300,0,144,1,1,0
300,0,108,0,1,1
184,0,72,1,0,1
184,0,72,0,0,0
184,0,72,0,0,0
184,0,72,0,0,0
184,1,72,1,0,1
184,1,72,0,0,0
184,1,72,0,0,0
184,1,72,0,0,0
184,1,72,0,0,0
184,1,720,0,0,0

利用data.txt绘制图形

#AutoTraceDraw.py
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(","))))
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])

自动轨迹绘制举一反三

理解方法思维

  • 自动化思维:数据和功能分离,数据驱动的自动运行
  • 接口化设计:格式化设计接口,清晰明了
  • 二维数据应用:应用维度组织数据,二维数据最常用

应用问题的扩展

  • 扩展接口设计,增加更多控制接口
  • 扩展功能设计,增加弧形等更多功能
  • 扩展应用需求,发展自动轨迹绘制到动画绘制
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值