1、文件的作用
存储数据,读写文件是最常见的 I/O 操作
2、打开和关闭文件
# 步骤: # 1)打开文件,获取文件描述符 # 2)操作文件描述符-->读/写 # 3)关闭文件close()-->文件读写完成后应该及时关闭:1、占用资源;2、数据丢失 f = open('test.txt', 'rw+') # 打开文件 print(f.read()) f.close() # 关闭文件
3、文件打开模式的区别
1)文件、文本模式和二进制模式
Windows换行:
Linux换行:
mac换行:
文件:文件本质上都是以二进制的模式存储在磁盘上的,用不同编译器打开会有编译的问题。
文本模式:文件用文本模式操作,会进行换行符的转换。不同操作系统之间文本模式的不同,本质上就是因为换行符的不同
二进制模式:文件用二进制模式操作,不会进行换行符的转换
2)open函数
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
参数说明(主要关注file和mode):
- file参数:表示文件的路径,可以是绝对路径也可以是相对路
- modle参数:
modle | 说明 |
r | read |
w | write 覆盖原数据,文件不存在则新建 |
a | append 追加,文件不存在则新建 |
r+ | 在r的基础上增加了可写功能,首位开始更新文件内容 |
w+ | 在w的基础上增加了可读功能,会将文件内容清空 |
a+ | 在a的基础上增加了可读功能,内容只能加在文件末尾 |
rb | read binary |
wb | write binary |
ab | append binary |
- abuffering 表示缓冲区的策略选择
- encoding 指名文件的编码,仅适用于文本文件
- errors 指明编码和解码错误时怎么样处理,不能在二进制模式下使用
- 1)当指明为’strict’时,编码出错则抛出异常ValueError。
- 2)当指明为’ignore’时,忽略错误。
- 3)当指明为’replace’时,使用某字符进行替代模式,比如使用’?’来替换出错的字符。
- 4)其它相应还有surrogateescape/xmlcharrefreplacs/backslashreplace。
- newline 控制文本模式下一行的结束字符。可以是None,’’, , , 等
- closefd 用来给一个文件句柄传进来,当退出文件使用时,不对文件句柄进行关闭。如果传递一个文件名进来,这个参数无效,必定为True方式。
- opener 用来实现自己定义打开文件方式,较复杂
4、如何在程序中进行文件读写
# 1)读写操作 f = open('test.txt', 'rw') # 文件写操作 f.write('第一次写数据!') # 文件读操作 read(num) num,文件字数 print(f.read()) f.close() # 2)写函数 write() writelines() f = open('test.txt', 'w') # write() 一次写入一行数据 f.write('第一次写数据!') # writelines() 一次写入多行数据,列表元素中一个元素代表一行
lines = ['a ', 'b ', 'c '] f.writelines(lines) f.close() # 3)读函数 read(num) readline() readlines() f = open('test.txt', 'r') # read(num) num,文件字数,为空则读取文件所有数据 print(f.read(5)) # readline() 依次读取一行数据 print(f.readline()) # 读取第一行 print(f.readline()) # 读取第二行 print(f.readlines()) # 一次读取所有行,返回列表
# 小练习:读取文件并去除空格,输出在屏幕 for line in f.readlines(): if line[-1] == ' ': print(line[:-1]) else: print(line) f.close()
5、with语句(语法糖),执行文件后自动关闭文件。
with open('test.txt', 'w') as f: f.write('我使用with后重新覆盖范本内容,并赋值给f!!!') with open('test.txt', 'a') as f: f.write(' 我再多说一句,我现在不需要再使用close()去保存文件了,直接使用with语句就可以了!') with open('test.txt', 'r') as f: print(f.read())
6、文件操作
# 1)文件重命名 import os os.rename('a.bk.txt', 'hello.txt') # 2)文件删除 os.remove('hello.txt') # 3)获得文件名列表 os.listdir() # 4)创建和删除文件夹 os.mkdir('abc') os.rmdir('abc')