【Python学习】文件处理

 代码是我们处理问题的工具,而文件就是作为一个接口,让我们获得或者存储数据的地方,将文档和代码联系起来是一件非常重要的事。本篇笔记将详细记述文件处理相关内容。

一.文件的开关

文件操作为了长期保存数据以便重复使用、修改和共享,将数据以文件形式存储的情况。文件并不简单包括文档,而是图形、图像、音频、视频、可执行文件等等的统称。文件也分文本文件二进制文件。(文本文件可以阅读,二进制文件负责给其他软件编译,人们无法阅读)

打开文件的基本流程:
  1. 打开或创建一个文件
  2. 读/写数据
  3. 关闭文件

打开文件的语句:

open函数

with open (file_name [, mode= ' r ' , encoding=None]) as fp
        文件操作语句‘
注:file_name指被打开的文件名称,包含后缀名
参数encoding指定对文本进行编码和解码的方式,只适用于文本模式
with.as语句:保证了自动发生什么异常都会自动执行清理。

with+ 操作 as+对象:

        对象操作

注:相当于在执行对象操作前调用__enter__() 方法,后调用__exit__() 方法。

文件路径:

绝对路径:从根目录开始

相对路径:相对于程序当前的工作目录

区别与相同

  • 都可以担当open()的file_name
  • 开始的地点不同,绝对路径依照当前电脑的路径进行操作 ,而相对路径默认从当前工作文件开始改变,”./“表示向下,”../“表示向前。
  • 相对路径有时更简便,可以直接写文件名

编码与解码

编码(encode())、解码 (decode())即对字符和字节序列的相互转换,

编成字节序列是编码,编成字符是解码。

文件格式

即open()的mode参数,需要指定访问模式。

 

 二进制的文件格式

 二.文件的读写

读写的相关函数

函数引用

注:作为内置函数使用

write([str]):向文件中写入指定字符串

writelines():向文件中写入一序列的字符串

read():用于从文件读取指定的字节数,如果未给定或为负则读取所有

readlines():用于一次性读取文件所有内容并返回一个列表,其中列表中每个元素对应原文件每一行数据。

tell()返回文件的当前位置,即文件指针当前位置
seek(offset, from):从指定位置开始读取或者写入文件的数据。
         offset:表示偏移量,也就是代表需要移动偏移的字节数
        from:表示方向,可以指定从哪个位置开始偏移
        • 0:表示文件开头(默认值)
        • 1:表示当前位置
        • 2:表示文件末尾

三.CSV文件读写

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 保存至文件 file
pickle.load(file) :重构file中的一个对象
缺点:只适用于python,多版本不兼容
如果要将数据在不同的语言间传递时,需要将对象序列化为 json 模式。
优点:标准格式、比xml更快、可以直接在web页面读取。

注:需要引用json模块

常用函数:

 注:dump文件会在转换成json字符后直接写入文件

这篇笔记搁置了一个多星期终于写完了,以后可不能再这么懒了。

END.

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值