把文件分为文本文件和二进制文件两大类
数据库底层也是文件 需要IO操作
文本文件 默认是unicode字符集(两个字节表示一个字符)
二进制文件,把数据内容用字节进行存储,必须使用专用软件解码
python文件操作模块 io模块 os模块 等
创建文件对象open()
open(文件名[,打开方式])
对象来代表文件 通过io流同步到实际文件对象里面
打开方式有如下几种:r读模式 w写模式 a追加模式 b二进制模式 +读写模式
没有增加模式b 则默认创建的是文本文件对象 处理的基本单元是字符 b模式床架你得是二进制文件对象处理的基本单元是字节
文件写入
三个步骤:创建文件对象 写入数据 关闭文件对象(f.close())
编码方式
编码和解码方式不一样 会导致乱码 一般项目都是utf-8 python项目默认使用unicode 实际存储可能是gbk也可能是utf-8 linux默认编码是utf-8 windows默认gbk
文本文件读取
一般如下三个方法:
(1)read([size]) 从文件中读取size个字符,并作为结果返回,如果没有size参数读取整个文件,督导文件末尾返回空字符串
(2)readline() 读取一行内容返回
(3)readlines() 每一行作为一个字符串存入列表中,返回该列表
enumerate() 函数
枚举函数 把每一个元素都和索引关联起来
列表推导式 可以减少很多代码量,相对于其他编程语言
二进制文件的读写
模式加b wb ab rb
读取图片
with open("aa.gif","rb") as f:
with open("aa_copy.gif","wb") as w:
for line in f.readlines():
w.write(line)
print("图片拷贝完成")
文件对象常用方法和属性
属性 name mode closed
打开模式 r w a b +
常用方法 seek(offset[,whence]) 把文件指针移动到新的位置,offset标识相对于whence的位置,
字节的偏移量offset: off 为正往结束方向移动,为负往开始方向移动
whence不同的值代表不同含义,0 从文件头开始计算 1从当前位置开始计算 2从文件为开始计算
tell() 返回文件指着您的当前位置
使用pickle 序列化
序列化指的是:将对象转化成串行化数据形式,存储到硬盘或通过网络传输到其他地方,反序列化指的是相反的过程,将读取到的串行化数据转化成对象
pickle.dump(obj,file) obj是要被序列化的对象,file指的是存储的文件
pickle.load(file) 从file读取数据,反序列化成对象
序列化之后再反序列化形成了新的对象
CSV文件的操作
csv 是逗号分隔符文本格式,用于数据交换
值没有类型,所有值都是字符串
不能指定字体颜色等样式,不能指定单元格的宽度高度,不能合并
没有多个工作表,不能嵌入图像图标
python csv模块
a = csv.reader(f)
a.writer(f)
a.writerow
os os.path模块
直接对操作系统进行操作,我们可以直接调用操作系统的可执行文件、命令、直接操作文件、目录等
os文件目录操作
常用操作文件的方法 remove rename stat listdir
os.path模块提供了目录相关(路径判断 路径切分 路径链接 文件夹遍历)
os.walk()方法 返回三个元素的元组(dirpath,dirnames,filenames)
dirpath 列出指定目录的路径
dirnames:目录下的所有文件夹
filenames:目录下的所有文件
shutil 模块(拷贝和压缩)
主要用来做文件和文件夹的拷贝、移动、压缩解压缩 作为os模块的补充
zipfile 压缩解压缩