文件是数据的抽象和集合
文本文件 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!'
遍历全文本:方法一(一次读入,统一处理)
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()
示例
fo = open("output.txt","w+")
ls = ["中国","美国","英国"]
fo.writelines(ls)
print(type(fo))
fo.seek(0) # 写入ls之后,将指针返到文件的最开始,并且从这个地方开始去进行文件的全文的遍历打印
for line in fo:
print(line)
fo.close()
中国美国英国
注意事项:注意文件操作过程中指针所在位置及程序的影响
自动轨迹绘制
基本思路
每个人的定义都不同
创建一个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])
理解方法思维
应用问题的扩展