文件和数据格式化
文件的使用
文件的类型
文件的理解
文件是数据的抽象和集合
- 文件是存储在辅助存储器上的数据序列
- 文件是数据存储的一种形式
- 文件展现形态:文本文件和二进制文件
文本文件 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])
自动轨迹绘制举一反三
理解方法思维
- 自动化思维:数据和功能分离,数据驱动的自动运行
- 接口化设计:格式化设计接口,清晰明了
- 二维数据应用:应用维度组织数据,二维数据最常用
应用问题的扩展
- 扩展接口设计,增加更多控制接口
- 扩展功能设计,增加弧形等更多功能
- 扩展应用需求,发展自动轨迹绘制到动画绘制