代码是我们处理问题的工具,而文件就是作为一个接口,让我们获得或者存储数据的地方,将文档和代码联系起来是一件非常重要的事。本篇笔记将详细记述文件处理相关内容。
一.文件的开关
文件操作是为了长期保存数据以便重复使用、修改和共享,将数据以文件形式存储的情况。文件并不简单包括文档,而是图形、图像、音频、视频、可执行文件等等的统称。文件也分文本文件和二进制文件。(文本文件可以阅读,二进制文件负责给其他软件编译,人们无法阅读)
- 打开或创建一个文件
- 读/写数据
- 关闭文件
打开文件的语句:
open函数:
with open (file_name [, mode= ' r ' , encoding=None]) as fp :文件操作语句‘注:file_name指被打开的文件名称,包含后缀名参数encoding指定对文本进行编码和解码的方式,只适用于文本模式
with+ 操作 as+对象:
对象操作
注:相当于在执行对象操作前调用__enter__() 方法,后调用__exit__() 方法。
文件路径:
绝对路径:从根目录开始
相对路径:相对于程序当前的工作目录
区别与相同:
- 都可以担当open()的file_name
- 开始的地点不同,绝对路径依照当前电脑的路径进行操作 ,而相对路径默认从当前工作文件开始改变,”./“表示向下,”../“表示向前。
- 相对路径有时更简便,可以直接写文件名
编码与解码:
编成字节序列是编码,编成字符是解码。
文件格式:
即open()的mode参数,需要指定访问模式。
二进制的文件格式:
二.文件的读写
读写的相关函数:
函数引用:
注:作为内置函数使用
write([str]):向文件中写入指定字符串
writelines():向文件中写入一序列的字符串
read():用于从文件读取指定的字节数,如果未给定或为负则读取所有
readlines():用于一次性读取文件所有内容并返回一个列表,其中列表中每个元素对应原文件每一行数据。
tell(): 返回文件的当前位置,即文件指针当前位置seek(offset, from):从指定位置开始读取或者写入文件的数据。offset:表示偏移量,也就是代表需要移动偏移的字节数from:表示方向,可以指定从哪个位置开始偏移• 0:表示文件开头(默认值)• 1:表示当前位置• 2:表示文件末尾
三.CSV文件读写
CSV文件(逗号分隔值,分隔字符也可以不是逗号)实质上是文本文件,文本编辑器打开可读性不高,主要以文本形式存储表格数据(数字和文本)。
注:在使用时应插入csv模块。这个模块可以将CSV文件的内容转换为Python的字典。
读写CSV文件的方式:
列表式的操作:
函数调用:
csv.reader(csvfile,dialect='excel', delimiter=', '):以文本文件方式打开,再将文件对象传递给csv模块。
csvfile:文件对象或列表对象
delimiter:指定分隔符,默认是逗号如果想要进入无头模式,只需要在with打开文件后,加入head_row = next(reader)语句即可。
csv. writer (csvfile,dialect='excel', delimiter=', ') :创建一个CSV文件,以方便后续操作csv.write():输入数据,(一行多行都行)可迭代对象的每个元素作为一行,且行内元素间以逗号(,)相隔。注:读取文本内容的代码必须在缩进内部进行。
操作注意事项:
四.文件与文件夹的基本操作
os与os.path模块有大量的操作文件方法。
函数调用:
os.mkdir (path, mode=oc777):创建目录若path目录已存在,则报错os.path .exist(路径名 ):判断路径和文件存在os.rename(需要修改的文件名, 新的文件名 ):文件重命名os.remove(待删除的文件名 ):文件删除常见目录操作函数:![]()
在基于os模块上,可以方便的快捷建立起一个新的文件:
import os
if not os.path.exists("新文件"):
os.mkdir("新文件")
五.对象序列化
函数调用:
pickle.dump(obj,file,protocol=None) : 将对象 obj 保存至文件 filepickle.load(file) :重构file中的一个对象缺点:只适用于python,多版本不兼容
注:需要引用json模块
常用函数:
注:dump文件会在转换成json字符后直接写入文件
这篇笔记搁置了一个多星期终于写完了,以后可不能再这么懒了。
END.