7.1文件概述
7.1.1文件标识
•意义:找到计算机中唯一确定的文件。
组成:文件路径、文件名主干、文件扩展名
操作系统以文件为单位对数据进行管理
eg:
7.1.2文件类型
根据数据的逻辑存储结构,分为文本文件和二进制文件。
文本文件:专门存储文本字符数据。
二进制文件:不能直接使用文字处理程序正常读写,必须先了解其结构和序列化规则,再设计正确的反序列化规则,才能正确获取文件信息。
标准文件:
eg:
import sys
file = sys.stdout
file.write("hello")
7.2文件的基本操作
打开、关闭、读写
1打开文件
内置函数open()用于打开文件,该方法的声明如下:
open(file, mode='r', buffering=-1)
2.关闭文件
Python可通过close()方法关闭文件,也可以使用with语句实现文件的自动关闭。
(1)close()方法
file.close()
(2)with语句
•with语句可预定义清理操作,以实现文件的自动关闭。
with open('a.txt') as f:
pass
及时关闭文件的意义:
1.计算机中可打开的文件数量是有限
2.打开的文件占用系统资源
3.若程序因异常关闭,可能产生数据丢失
7.2文件读写
Python提供了一系列读写文件的方法,包括读取文件的read()、readline()、readlines()方法和写文件的write()、writelines()方法。
1读取文件——read()方法
read()方法可以从指定文件中读取指定字节的数据,其语法格式如下:
read(n=-1)
with open('file.txt', mode='r') as f:
print(f.read(2)) # 读取两个字节的数据
print(f.read()) # 读取剩余的全部数据
readline()方法
readline()方法可以从指定文件中读取一行数据,其语法格式如下:
readline()
with open('file.txt', mode='r', encoding='utf-8') as f:
print(f.readline())
print(f.readline())
with open('file.txt', mode='r', encoding='utf-8') as f:
print(f.readlines()) #使用readlines()方法读取数据
2.写文件——write()方法
string = "Here we are all, by day; by night." # 字符串
with open('write_file.txt', mode='w', encoding='utf-8') as f:
size = f.write(string) # 写入字符串
print(size) # 打印字节数
writelines()方法
string = "Here we are all, by day;\nby night we're hurl'd By dreams,
each one into a several world."
with open('write_file.txt', mode='w', encoding='utf-8') as f:
f.writelines(string)
3.定位读写
with open('file.txt') as f:
print(f.tell()) # 获取文件读写位置
print(f.read(5)) # 利用read()方法移动文件读写位置
print(f.tell()) # 再次获取文件读写位置
with open('file.txt') as f:
print(f.tell()) # 获取文件读写位置
print(f.read(5)) # 利用read()方法移动文件读写位置
print(f.tell()) # 再次获取文件读写位置
7.3文件目录管理
7.5 数据维度与数据格式化
维度:从广义上讲,维度是与事物“有联系”的概念的数量,根据“有联系”的概念的数量,事物可分为不同维度。
根据组织数据时与数据有联系的参数的数量,数据可分为一维数据、二维数据和多维数据。
一维数据:具有对等关系的一组线性数据,如:一维列表、一维元组、集合
二维数据:二维数据关联参数的数量为2,如:矩阵、二维数组、二维列表、二维元组
多维数据: 利用键值对等简单的二院关系展示数据间的复杂结构,如:字典
一二维数据读写
1.数据存储
2.数据读取
csv_file = open('score.csv')
lines = []
for line in csv_file:
line = line.replace('\n','')
lines.append(line.split(','))
print(lines)
csv_file.close()
3多维数据格式化
为了直观地表示多维数据,也为了便于组织和操作,三维及以上的多维数据统一采用键值对的形式进行格式化。
网络平台上传递的数据大多是高维数据,JSON是网络中常见的高维数据格式。JSON格式的数据遵循以下语法规则:
1.写一个修改文件的程序,要求是原来的内容不能被覆盖,修改之后字符之间的空格不能变化(4个空格)
例题
生成100个MAC地址并写入文件中,MAC地址前6位(16进制)为01-AF-3B
01-AF-3B
01-AF-3B-xx
01-AF-3B-xx-xx
01-AF-3B-xx-xx-xx
3. """
当前目录下有一个文件名为 a.txt 的文本文件,存放着某班学生的计算机课成绩,共有学号、平时成绩、期末成绩三列。
请根据平时成绩占 40%,期末成绩占 60%的比例计算总评成绩(取整数) ,并分学号、总评成绩两列写入另一文件 score2.txt 。
同时在屏幕上输出学生总人数, 按总评成绩计 90 以上、80~89、70~79、60~69、60 分以下各成绩档的人数 和班级总平均分(取整数)