python学习笔记(11)--文件与数据格式化

文件的概念:

文件是数据的抽象和集合,是存储在辅助存储器上的数据序列,文件是数据存储的一种形式,文件的展现形态,文本文件和二进制文件。

文本文件输出:

f.txt文件保存:“我是中国人”

>>> tf=open("d:/python_test/f.txt", "rt")
>>> tf
<_io.TextIOWrapper name='d:/python_test/f.txt' mode='rt' encoding='cp936'>
>>> print(tf.readline())
我是中国人
>>> tf.close
<built-in method close of _io.TextIOWrapper object at 0x0000000002F81DC8>

二进制文件输出:

>>> bf=open("d:/python_test/f.txt", "rb")
>>> print(bf.readline())
b'\xce\xd2\xca\xc7\xd6\xd0\xb9\xfa\xc8\xcb'
>>> bf.close
<built-in method close of _io.BufferedReader object at 0x0000000002FD8F68>

文件的打开和关闭

文件处理步骤:打开->操作->关闭

open : 文件的存储状态->文件的占用状态

close: 文件的占用状态->文件的存储状态

常用的读写文件操作:a.read(size)  a.readline(size)  a.readlines(hint)  a.write(s)  a.writelines(lines)  a.seek(offset)

1、文件的打开

<变量名> = open(<绝对路径/相对路径/文件名>, <打开模式>)

'r'  只读模式,默认值,如果文件不存在,返回FileNotFoundError

'w' 覆盖写模式,文件不存在则创建,存在则完全覆盖

'x' 创建写模式,文件不存在则创建,存在则返回FileExistError

'a' 追加写模式,文件不存在则创建,存在则在文件最后追加内容

‘b’ 二进制文件形式

't' 文本文件模式,默认值

‘+’ 与r/w/x/a一同使用,在原功能基础上增加同时读写功能

f = open('f.txt', 'a+')    文本形式打开,追加写模式 + 读文件

f = open('f.txt', 'b')    二进制形式打开,读模式

2、文件的关闭

<变量名>.close()

如果调用了open没有调用close,程序运行过程中,文件就一直处于打开模式,在程序退出后,python的解释器会将文件关闭。要注意调用close。

3、文件内容的读取

<f>.read(size = -1)    读入全部内容,如果输入参数,读入前size长度,指针下移

<f>.readline(size = -1) 读入一行内容,如果给出参数,读入该行的前size长度,指针下移

<f>.readlines(hint=-1) 读入文件所有行,以每行为元素形成列表,如果给出参数,读入前hint行

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

4、数据的文件写入

<f>.write(s)  向一个文件中写入字符串或者字节流,指针下移

<f>.writelines(lines) 将一个元素全为字符串的列表写入文件 ,直接拼接,不换行,指针下移

ls=["中国","法国","英国"]
tf.writelines(ls)
“中国法国英国”

<f>.seek(offset) 改变当前文件操作指针的位置,offset的含义如下:0-文件开头,1-当前位置,2-文件结尾

fo=open("output.txt",'w+')
ls=["中国","法国","英国"]
fo.writelines(ls)
fo.seek(0)
for line in fo:
    print(line)
fo.close()
输出:
"中国法国英国"    

5、实例 从文件中读取数据绘制图形

#autodraw
import turtle as t
t.setup(800,600,0,0)
t.pencolor("read")
t.pensize(5)
datals = []
f = open("d:/python_test/data.txt")
for line in f:
     line = line.replace("\n","")    '''将\n替换为,'''
     datals.append(list(map(eval, line.split(","))))  /map 对第二个参数中的每一个元素,执行第一个参数的函数/
     datals
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])

举一反三:

1、自动化思维:数据和功能分离,数据驱动的自动运行

2、接口化设计:格式化设计接口,清晰明了

3、二维数据应用:应用维度组织数据,二维数据最常用

4、扩展接口设计,增加更多控制接口

5、扩展功能设计

6、扩展应用需求

猜你喜欢

转载自www.cnblogs.com/xingmuxin/p/9243654.html