文件操作当然需要明白什么是文件,具体是怎么样对其进行一系列操作的,下面是我的一些理解
文章目录:
一.文件的含义:
文件:存储数据的物理载体都是文件,数据在计算机中持久保存主要依靠的就是文件
二.操作文件格式及其中参数的介绍:
1.格式:
操作文件一般格式为:open(file, mode='r', encoding=None)
- file:必需的,文件路径(绝对或相对路径);
- mode:打开文件的模式;
- encoding:编码格式,一般为
utf-8
2.mode参数:
mode:代表了我们以什么形式打开文件(读,写,可读可写)
参数 | 含义 |
---|---|
w | 写入模式:文件存在则会覆盖文件内容,不存在则会进行创建,写入内容 |
w+ | 读写模式:和"w"有类似的功能,只不过可以读取文件 |
wb | 写入模式:以二进制方式写入文件,文件存在则会覆盖文件内容,不存在则会创建文件,然后写入内容 |
r | 只读模式:见名思意,read只对文件进行读取其内容操作,读取文件,文件不存在会报错 |
r+ | 读写模式:指针在文件开头,内容追加在文件末尾 |
rb | 只读模式:以二进制方式读取文件,文件指针将会放在文件的开头 |
a | 写入模式:文件存在则会对文件内容进行追加(写在文件末尾),不存在则会创建文件,然后再写入内容 |
a+ | 读写模式:和"a"有类似的功能,只不过可以读取文件 |
ab | 写入模式:以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入 |
注意:默认为文本模式,如果要以二进制模式打开,加上 b
3.encoding参数:
encoding:表示的是编码格式,一般最常用的有utf-8
中文编码格式
三:打开文件的两种方式:
一般打开文件有两种方式:
1.别名=open(file, mode=‘r’, encoding=None):
open(file, mode='r', encoding=None)
:这种打开方式一定要注意有始有终,因为打开了,就要在操作完毕后对其close
,不然会占用一个文件通道比较占内存,所以一般必须进行close()方法
"""open"""
f=open("测试.txt","w",encoding="utf-8")
f.write("Hello World").
"""切记不能忘记此方法"""
f.close()
2.with open(file, mode=‘r’, encoding=None) as 别名:
with open(file, mode='r', encoding=None) as 别名
:这种打开方式的好处是,打开后不用去用close()
方法去关闭文件,相对而言比较简单一点
"""with open"""
with open("测试.txt","w",encoding="utf-8")as f:
f.write("您好 世界")
四.读文件:
上面也说过了都问了读文件的几种方式,下面一起来看看
1."r"模式:
只读,文件不存在会报错
"""with open"""
with open("测试.txt","r",encoding="utf-8")as f:
print(f.read())
"""with open"""
with open("测试1.txt","r",encoding="utf-8")as f:
print(f.read())
(因为没有这个文件所以在读取时候就报错了)
2."rb"模式:
以二进制读取文件
"""with open"""
with open("测试.txt","rb")as f:
print(f.read())
不能使用encoding="utf-8"
,不然会报错
"""with open"""
with open("测试.txt","rb",encoding="utf-8")as f:
print(f.read())
五.写文件:
1."w"模式:
文件存在则覆盖内容不存在则创建
"""with open"""
with open("测试.txt","w",encoding="utf-8")as f:
f.write("Hello World")
2."a"模式:
文件存在则会进行追加,不存在则会创建
"""with open"""
with open("测试.txt","a",encoding="utf-8")as f:
f.write("我是追加进来的内容")
3."wb"模式:
以二进制方式写入文件,文件存在则会覆盖文件内容,不存在则会创建文件,然后写入内容
"""with open"""
with open("测试.txt","wb")as f:
f.write("hello".encode("utf-8"))
4."ab"模式:
以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入
"""with open"""
with open("测试.txt","ab")as f:
f.write("hello".encode("utf-8"))
六.读写文件:
1."w+"模式:
和"w"具有类似的功能,只不过就是多了读文件这一操作
"""with open"""
with open("测试.txt","w+",encoding="utf-8")as f:
f.write("我是第二次进来的内容,我会覆盖以前的")
print(f.read())
2."a+"模式:
和"a"具有类似的功能,但是可以读取文件
"""with open"""
with open("测试.txt","a+",encoding="utf-8")as f:
f.write("我是第二次追加进来的内容,我不会覆盖以前的")
print(f.read())
3."r+"模式:
指针在文件开头,内容追加在文件末尾
"""with open"""
with open("测试.txt","r+",encoding="utf-8")as f:
f.write("我是第三次追加进来的内容,我不会覆盖以前的")
f.write("您好")
print(f.read())
注意:相信大家在"w+"和"r+"中,都有可能出现读取不到文件的情况,这是因为光标定位的位置所导致的,定位在末尾肯定读取不到,所以我们可以在其中加入f.seek(0)
,类似于下代码:
"""with open"""
with open("测试.txt","w+",encoding="utf-8")as f:
f.write("我是第三次追加进来的内容,我不会覆盖以前的")
f.seek(0)
print(f.read())
将光标定位在文件开头,这样就可以进行读取了,希望大家谨记!!!
七.注意事项:
- 读文件文件必须存在
- 写文件注意模式,覆盖还是追加
- 在"wb",“ab”,"rb"时需注意
f.write("hello".encode("utf-8"))
,不能少了后面的编码格式,因为它们都是二进制执行一系列操作的,需要明白以什么编码形式进行
以上就是我对其模式的一些理解,下一篇将介绍读取文件的几种方法