文件操作(IO操作)
文件操作和远程网络都可以统称为:IO操作。
文本文件和二进制文件
文本文件存储的是普通字符,python是默认unicode码,可以用记事本打开,二进制文件是字节存储,无法用记事本打开,用其他软件打开。
创建文件对象open()
f=open(r"da.txt","r"),这里要注意,在打开文件对象以后,要进行f对象的关闭 ,close(),不仅仅是关闭文件对象,此关闭也关闭了操作系统打开的硬盘,释放了操作系统 打开硬盘的这部分资源。
乱码:
windows操作系统默认编码是ASCII码,linux默认是utf-8,python程序进行编码是unicode,open方式打开一个文件,在windows下,操作系统存入磁盘是以ASCII码的方式存入的,但是打开,因为是python进行的编码,所以打开,默认是utf-8(unicode的共识形式)的形式,就会产生乱码 。核心:乱码就是编码和解码不一致导致的。
close()关闭文件流
由于文件底层是由操作系统控制的,所以在调用close()方法的时候,首先会把缓冲 区数据写入文件,或者直接手动写下flush()方法,在关闭文件。
with语句(上下文管理器)
with关键字(上下文管理器)可以自动管理文件资源,不论什么原因跳出with块,
都确保文件的正常关闭,并且可以在代码执行完毕后,还原进入该代码的现场。
文本文件的读取:
1)read(size):读取字符个数
2)readline():一行行读取
enumerate()函数生成列表内的元组序列,可以进行行的分层。
seek(偏移量) 0表示从文件头开始计算、1表示从当前位置开始计算、2从文件尾部开始
计算,其他数字表示真正的偏移量。
使用pickle序列化
Python一切皆对象,本质就是"存储数据的内存块",将这些内存的数据按照一定顺序存在磁盘中(网络中其他机器),就叫做序列化,反之变成内存对象就是反序列化。
序列化:
pickle.dump(obj,file)
反序列化:
pickle.load(file)生成新的对象,和序列化之前的对象是不同的对象
csv文件的操作
csv是逗号分隔符文本格式,常常用于数据交换、excel文件和数据库数据的导入导出
。csv.reader()进行读操作;csv.writer()进行写操作
os和os.path模块
os模块可以帮忙我们直接对操作系统进行操作。
os.system可以直接调用系统的命令
os.startfile可以调用可执行文件
os.path 模块提供了目录相关的操作
os.walk()递归变量所有文件和目录
shutil模块(拷贝和压缩),对于os模块的一个补充
zipfile模块,也可以进行压缩,解压