第七章文件与数据格式化
7.1文件概述
1.文件标识
意义
唯一确定文件
组成
路径、文件名主干、文件扩展名
D:\itcast\chapter10\example.dat
# ________
#__________________文件名主干_____
# 路径 扩展名
操作系统以文件为单位进行数据管理
2.文件分类
基于数据逻辑存储结构
a.文本文件
文本字符
b.二进制文件
7.2文件的基本操作
7.2.1文件的打开与关闭
1.打开文件
open()函数
格式
open(file,mode = 'r',encoding=None)
- file:用于接收文件名或文件路径
- 参数encoding:用于指定文件的编码格式,常见的有Ascii、utf-8等
- 参数mode:用于设置文件的打开模式
常见文件打开模式及其搭配
- r/rb——只读模式:以只读方式打开文件/二进制文件,文件不存在,文件打开失败
- w/wb——只写模式:以只写方式打开文件/二进制文件,若文件已存在,则重写文件,否则创建新文件
- r+/rb+——读取(更新)模式:以读/写方式打开文件/二进制文件,文件不存在,文件打开失败
- w+/wb+——写入(更新)模式:以读/写方式打开文件/二进制文件,若文件已存在,则重写文件
2.关闭文件
close()方法
例えば
file.close()
with语句
文件对象使用完毕后,文件可自动关闭
例えば
with open('a.txt') as f:
pass#一些操作
7.2.2文件的读写
1.读文件
read()方法
格式
read(n=-1)
例えば
with open('file.txt',mode='r') as f:
print(f.read(2))#读取2各字节的数据
print(f.read())#读取全部数据
readline()方法
从指定文件中读取一行数据
格式
readline()
例えば
#file内容为:
#FRANCISCO at his post. Enter to him BERNARDO
#BERNARDO
#Who's there?
#FRANCISCO
with open('file.txt',mode='r',encoding='utf-8') as f:
print(f.readline())
print(f.readline())
#结果
#FRANCISCO at his post. Enter to him BERNARDO
#BERNARDO
readlines()方法
一次性读取文件中的所有数据,若读取成功返回一个列表
例えば
with open('file.txt',mode='r',encoding='utf-8') as f:
print(f.readlines())
#['FRANCISCO at his post. Enter to him BERNARDO/n','BERNARDO/nWho's there?/n','FRANCISCO/n']
2.写文件
write()
将指定字符串写入文件,若成功写入返回写入文件的数据的字节数
格式
write(data)
例えば
#file内容为:
#FRANCISCO at his post. Enter to him BERNARDO
#BERNARDO
#Who's there?
#FRANCISCO
size = "heeeheeeheee"
with open('file.txt',mode='r',encoding='utf-8') as f:
size = f.write(string)
print(size)
writelines()方法
将字符串型列表写入文件
格式
writelines(lines)
7.2.3文件的定位读写
文件默认读写位置为0
tell()方法
获取文件当前的读写位置
with open('file.txt') as f:
print(f.tell())
print(f.read(5))
print(f.tell())
#运行结果
#0
#5
seek()方法
控制文件的读写位置,调用成功后会返回当前读写位置
格式
seek(offset,from)
-
参数offset:偏移量,即读写位置需要移动的字节数
-
from:用于指定文件的读写位置,参数取值0、1、2
-
0:表示文件开头
-
1:表示使用当前读写位置
-
2:表示文件末尾
with open('file.txt') as f:
f.tell()#获取文件读写位置
loc = f.seek(5,0)#相对文件首部移动5字节
print(loc)#打印当前文件读写位置
#结果
#5
7.3文件与目录管理
os 模块中也定义了与文件操作相关的函数
remove()函数
删除文件
格式
import os
os.remove(文件名)
rename()函数
更改文件名
格式
import os
os.rename(原文件名,新文件名)
mkdir()/rmdir()函数
mkdir()函数
用于在当前目录下创建目录,不能与已有目录重名
os.mkdir('dir')
rmdir()函数
用于删除目录,删除前必须将文件夹里的目录清理干净
os.rmdir('dir')
getcwd()函数
获取当前目录
print(os.getcwd())
#结果
#\python_study\frist_proj
chdir()函数
更改默认路径
os.chdir('E:\\')#更改默认目录为E:\
print(os.getcwd())#获取当前工作目录
#结果'E:\'
listdir()函数
获取指定目录下的文件名列表
dris = os.listdir('./')#获取文件名列表
print(dirs)
7.5数据维度与数据格式化
7.5.1基于维度的数据分类
一维数据
一组线性数据
一维列表、一维元组、一维集合等
二维数据
此类数据对应数学中的矩阵和二维数组
二维列表、二维元组等(列表里套列表)
多维数据
利用键值对等简单的二元关系展示数据间的复杂结构
字典
7.5.2一维数据和二维数据的储存与读写
国际上通用的一维数据和二维数据存储格式为CSV,文件的每一行对应表格中的一条数据记录,每条记录有一个或多个字段组成。