Python操作文件的基本流程
操作文件的基本流程
操作文件的函数
序号 | 函数/方法 | 说明 |
---|---|---|
01 | open | 打开文件,并且返回文件操作对象 |
02 | read | 将文件内容读取到内存 |
03 | write | 将指定内容写入文件 |
04 | close | 关闭文件 |
open 函数在把文件打开的同时返回文件对象
其余的三个函数都需要对文件对象进行操作才能够有效运用
open函数
第一个参数是文件名(文件名区分大小写)第二个参数是打开方式;
如果文件存在返回文件操作对象;
如果文件不存在抛出异常
read函数
可以一次性读入并返回文件的所有内容
close函数
关闭文件
演示代码
1 |
|
文件打开方式
1 |
|
访问方式说明
访问方式 | 说明 |
---|---|
r | 以只读方式打开文件。文件的指针将会放在文件的开头,这是默认模式。如果文件不存 在,抛出异常 |
w | 以只写方式打开文件。如果文件存在会被覆盖。如果文件不存在,创建新文件 |
a | 以追加方式打开文件。如果该文件已存在,文件指针将会放在文件的结尾。如果文件不 存在,创建新文件进行写入 |
r+ | 以读写方式打开文件。文件的指针将会放在文件的开头。如果文件不存在,抛出异常 |
w+ | 以读写方式打开文件。如果文件存在会被覆盖。如果文件不存在,创建新文件 |
a+ | 以读写方式打开文件。如果该文件已存在,文件指针将会放在文件的结尾。如果文件不 存在,创建新文件进行写入 |
以bytes类型操作的读写,写读模式(这种方式是仅对非文本文件)
r+b | 读写【可读,可写】 |
---|---|
w+b | 写读【可写,可读】 |
a+b | 写读【可写,可读】 |
对于非文本文件,我们只能使用b模式,"b"表示以字节的方式操作(而所有文件也都是以字节的形式存 储的,使用这种模式无需考虑文本文件的字符编码、图片文件的jgp格式、视频文件的avi格式)
在函数中写的时候不需要加上+号,需要直接写 rb wb ab
按行读取文件内容
read方法默认会把文件的所有内容一次性读取到内存
readline方法可以一次读取一行内容;
方法执行后,文件指针移动到下一行,准备再次读取;
with结构
with结构的好处是不需要进行再次手动去关闭文件
1 |
|
文件编码
f=open(…)是由操作系统打开文件,那么如果我们没有为open指定编码,那么打开文件的默认编码很明 显是操作系统说了算了,操作系统会用自己的默认编码去打开文件,在windows下是gbk,在linux下是 utf-8。
通过这个方式可以将文件强制使用某种编码方式去读取,而非使用操作系统本身默认的编码方式
1 |
|
文件的操作方法
常用操作方式
read(3):
文件打开方式为文本模式时,代表读取3个字符
文件打开方式为b模式时,代表读取3个字节
文本文件所有的操作方式整理:
1 |
|
案例一、文件的修改
文件的数据是存放于硬盘上的,因而只存在覆盖、不存在修改这么一说,我们平时看到的修改文件,都 是模拟出来的效果,具体的说有两种实现方式:
方式一:将硬盘存放的该文件的内容全部加载到内存,在内存中是可以修改的,修改完毕后,再由内存 覆盖到硬盘(word,vim,nodpad++等编辑器)
1 |
|
方式二:将硬盘存放的该文件的内容一行一行地读入内存,修改完毕就写入新文件,最后用新文件覆盖源文件
1 |
|
案列二、完成文件的复制
1 |
|
案例三、计算总价
文件a.txt内容:每一行内容分别为商品名字,价钱,个数。
1 |
|
通过代码,将其构建成这种数据类型:[{‘name’:‘apple’,‘price’:10,‘amount’:3}, {‘name’:‘tesla’,‘price’:1000000,‘amount’:1}…] 并计算出总价钱。
自己的代码:
1 |
|
案例四、注册登录
将之前写的注册登录完善,采用文件进行记录
1 |
|