目录
文件读写包括文件读取和写入文件
一、文件读取
读取文件包括:打开文件、读文件、关闭文件
file1 = open('/Users/Ted/Desktop/test/abc.txt','r',encoding='utf-8') #打开文件
filecontent = file1.read() #读文件
file1.close() #关闭文件
1.1 打开文件
open()函数
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
file1 = open('/Users/Ted/Desktop/test/abc.txt','r',encoding='utf-8')
参数说明:
- file: 必需,文件路径(相对或者绝对路径),
- 绝对路径就是最完整的路径,一种是以盘符为开头的
- 相对路径指的就是【相对于当前文件夹】的路径,也就是你编写的这个py文件所放的文件夹路径,使用相对路径时直接写目标文件名称即可
#绝对路径 file1 = open('C:\\Users\\Ted\\Desktop\\test\\abc.txt','r',encoding='utf-8') #相对路径(假设当前文件即在C:\Users/Ted/Desktop/test文件夹下) file1 = open(file ='abc.txt','r',encoding='utf-8') - ../ 用来找当前文件夹上一级的文件夹,多次使用可以重复找上级文件夹
- 注意:路径中的'\'会被识别成转义字符,三种处理办法:
open('C:\\Users\\Ted\\Desktop\\test\\abc.txt') #将'\'替换成'\\' open(r'C:\Users\Ted\Desktop\test\abc.txt') #在路径前加上字母r open(r'C:/Users/Ted/Desktop/test/abc.txt') #替换为/
- mode: 可选,文件打开模式,默认是r
rb只能读取原本就是二进制的文件,rt可以将字符串文件按照二进制文件读取,写和追加同理
- buffering: 设置缓冲
- encoding: 选择编码表
- errors: 报错级别
- newline: 区分换行符
- closefd: 传入的file参数类型
- opener: 设置自定义开启器,开启器的返回值必须是一个打开的文件描述符。
- file1:用于存放打开的文件的变量
| 1 | 关闭文件。关闭后文件不能再进行读写操作。 |
| 2 | 刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。 |
| 3 | 返回一个整型的文件描述符(file descriptor FD 整型), 可以用在如os模块的read方法等一些底层操作上。 |
| 4 | 如果文件连接到一个终端设备返回 True,否则返回 False。 |
| 5 | Python 3 中的 File 对象不支持 next() 方法。 返回文件下一行。 |
| 6 | 从文件读取指定的字节数,如果未给定或为负则读取所有。 |
| 7 | 读取整行,包括 "\n" 字符。 |
| 8 | 读取所有行并返回列表,若给定sizeint>0,返回总和大约为sizeint字节的行, 实际读取值可能比 sizeint 较大, 因为需要填充缓冲区。 |
| 9 | 移动文件读取指针到指定位置 |
| 10 | 返回文件当前位置。 |
| 11 | 从文件的首行首字符开始截断,截断文件为 size 个字符,无 size 表示从当前位置截断;截断之后后面的所有字符被删除,其中 windows 系统下的换行代表2个字符大小。 |
| 12 | 将字符串写入文件,返回的是写入的字符长度。 |
| 13 | 向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。 |
1.2 读文件
read()函数
- 对于借助 open() 函数,并以可读模式(包括 r、r+、rb、rb+)打开的文件,可以调用 read() 函数逐个字节(或者逐个字符)读取文件中的内容。
- 如果文件是以文本模式(非二进制模式)打开的,则 read() 函数会逐个字符进行读取;反之,如果文件以二进制模式打开,则 read() 函数会逐个字节进行读取。
- read(size),size 作为一个可选参数,用于指定一次最多可读取的字符(或字节)个数,如果size为负数或者不填写,则读取全部。
file.read([size])
1.3 关闭文件
close()函数
作用:
1.计算机能够打开的文件数量是有限制的,open()过多而不close()的话,就不能再打开文件了;
2.能保证写入的内容已经在文件里被保存好了。
二、写入文件
写入文件包括:打开文件、写入文件、关闭文件
file1 = open('/Users/Ted/Desktop/test/abc.txt', 'w',encoding='utf-8') #打开文件
file1.write('张无忌\n') #写文件
file1.close() #关闭文件
打开及关闭与文件读取一致,这里主要描述如何写入文件。
2.1 write()函数
write()函数与open()函数配合使用时需要注意
- 如果文件是以“w”形式打开的,则write()函数此时的作用是重写文件内容
- 如果文件是以“a”形式打开的,则write()函数此时的作用是在原文件内容后面增加新内容
file1 = open('/Users/Ted/Desktop/test/abc.txt', 'w',encoding='utf-8')
file1.write('张无忌\n')
file1.write('宋青书\n')
file1 = open('/Users/Ted/Desktop/test/abc.txt', 'a',encoding='utf-8')
#以追加的方式打开文件abc.txt
file1.write('张无忌\n')
#把字符串'张无忌'写入文件file1
file1.write('宋青书\n')
#把字符串'宋青书'写入文件file1
三、上下文管理器
3.1 with的用法
补充一个用法,为了避免打开文件后忘记关闭,占用资源或当不能确定关闭文件的恰当时机的时候,我们可以用到关键字with,此时可以不用使用close()函数:
# 普通写法
file1 = open('abc.txt','a')
file1.write('张无忌')
file1.close()
# 使用with关键字的写法
with open('abc.txt','a') as file1:
#with open('文件地址','读写模式') as 变量名:
#格式:冒号不能丢
file1.write('张无忌')
#格式:对文件的操作要缩进
#格式:无需用close()关闭
3.2 创建上下文管理器
with语句体,其实就是一个上下文管理器
open方法中实现上下文管理器的功能,with返回一个上下文管理
在类中使用__enter__和__exit__方法,我们就说这个类是一个上下文管理器
- __enter__:在进入with语句体时会执行的语句
- __exit__:在离开with语句体时会执行的语句
#定义一个上下文管理器 class MyMange: def __enter__(self): print('进入with语句') def __exit__(self, exc_type, exc_val, exc_tb): print('离开with语句') #MyMange与with语句配合使用时,会先执行__enter__再执行__exit__ with MyMange(): print('正在执行') >>> 进入with语句 正在执行 离开with语句
__exit__的四参数均不需要赋值,放在那里即可,self后的三个参数是用来处理with语句出现的异常的 当程序没有异常时,三个参数均返回None: 有异常的时候,exc_type返回异常的类型、exc_val返回异常的值、exc_tb返回异常的错误栈信息 异常是被抛出还是被捕获,取决于__exit__的返回值,如果返回值是False,则抛出,如果是True 则捕获异常,不写return语句则默认为False。


1万+

被折叠的 条评论
为什么被折叠?



