📝前言:
这篇文章主要讲解一下python中对于文件的基础操作:
1,文件编码
2,文件的打开与关闭操作
3,文件读写操作
文章目录
一,文件编码
在学习文件操纵前,我们先来了解一下文件编码
什么是文件编码?
文件编码是指在计算机中存储和表示字符串的方法。它涉及字符集中的字符如何转换为二进制数,以及在读取或写入文件时如何将二进制数转换回字符集。
在 Python 中,当你使用 open()
函数打开文件时,可以指定文件的编码方式。常见的编码方式有:
注意:没有特殊情况,我们一般使用UTF-8
的格式打开文件,使用不正确的编码可能会导致乱码或无法打开文件的问题。
二,文件的打开与关闭
1,open()函数
我们在对文件进行读写操作前,需要先试用open()
函数打开文件
函数原型:
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
这个有点复杂了,但其实我们常用到的参数就'file'
、mode
以及encoding
,分别是指文件的路径,文件的打开方式以及文件的编码方式(一般情况下使用UTF-8
)
示例一:
(以只读的形式打开一个文件,返回的是一个文件对象):
f = open('file.txt','r',encoding='UTF-8') #注意:encoding要关键字传参
我们还可以用使用 with
语句打开文件,可以确保文件在操作完成后自动关闭,避免资源泄露。
示例二:
# 以读模式打开文件
with open('file.txt', 'r') as f:
content = f.read()
# 以写模式打开文件
with open('file.txt', 'w') as f:
f.write('Hello, world!')
这个时候文件对象就是as
后面的f
2,打开模式
在刚刚的例子中我们提到了’‘r’和’w’:读和写两种打开模式,下面我们将看看其他的模式,并具体介绍一下这些模式:
注意:
打开的文件不存在,python中的“w”
功能就会创建新文件
打开的文件存在,"w"
写入会覆盖原有内容(即把原有内容清空了,再写入)
3,路径的书写
斜杠(/
)或双反斜杠(\
)都可以用来表示路径分隔符。例如:C:\Users\username\Documents
为了确保代码的跨平台兼容性,建议使用斜杠(/
)作为路径分隔符,这样可以同时在Windows、Linux和macOS上运行而无需修改。
4,文件的关闭
文件的关闭使用close()
,示例:
f.close()
三,文件的读写操作
1,文件的读取
(1)read()
用于读取文件的所有内容,读取的内容以字符串的形式储存并返回
语法:
read(num)
num
代表从文件中读取的字符串的长度,单位是字节,如果没有传入参数,则代表读取全部内容
例如:
with open("file.txt", "r") as file:
content = file.read()
(注意: 如果有多个read
读取,后面的read
会从前一个read
读取到的末尾开始读)
(2)readline()
用于读取文件中的一行,例如:
with open("file.txt", "r") as file:
line = file.readline()
(3)readlines()
读取文件中的所有行(回车符也会被读取),然后每一行为一个元素,以列表的形式储存
例如:
with open("file.txt", "r") as file:
lines = file.readlines()
(4)for循环读取
我们还可以用for
循环来读取文件的每一行,得到的每一行都是字符串
例如:
with open("file.txt", "r") as file:
for line in file:
......
总结:
2,文件的写入
(1)write(content)
这个方法用于将内容写入文件。例如:
with open("file.txt", "w") as file:
file.write("Hello, World!")
(2)writelines(lines)
这个方法用于将多行内容写入文件。例如:
with open("file.txt", "w") as file:
file.writelines(["Hello", "\n", "World!"])
注意:我们调用上面两种方法写入的时候,内容并不会直接被写入文件里面,内容会被积攒在程序的内存中,即:缓存区
只有当我们调用flush()
方法刷新内容的时候,内容才会出现在文件里
示例:
f = open("D:/test.txt", "w", encoding="UTF-8")
# write写入(原内容会被覆盖)
f.write("Hello World!")
# flush刷新
f.flush()
注意:close()
方法自带flush()
功能
(3)文件的追加
"a"
模式:写入内容的时候,是在原来内容的后面追加
追加写入的函数和"w"
一样,只是打开模式不同
示例:
f = open("D:/test.txt", "a", encoding="UTF-8")
# write写入(原内容不会被覆盖)
f.write("Hello World!")
# flush刷新
f.flush()