文章目录
- 文件操作
文件操作
计算机只认识 0 和 1, 所以需要将内容翻译为 0 和 1 才能保存在计算机中, 同时也需要编码, 将计算机中保存的 0 和 1, 反向翻译回可以识别的内容
什么是编码
编码就是一种规则集合, 记录了内容和二进制间相互进行转换的逻辑,编码有许多中, 我们最常用的是 UTF-8 编码
文件的操作步骤
我们平时对文件基本操作, 大概可以分为三个步骤
- 打开文件
- 读写文件
- 关闭文件
open() 打开文件
在python中, 使用 open 函数, 可以打开一个已经存在的文件, 或者创建一个新文件
python
open(name, mode, encoding)
name: 要打开的目标文件名的字符串, 可以包含文件所在的具体路径)
mode: 设置打开文件的模式(访问模式): 只读, 写入, 追加等
encoding: 编码格式
例如:
python
f = open('python.txt', 'w', encoding = "UTF-8")
此时的 'f' 是 open 函数的文件对象, 对象是 python 中一种特殊的数据类型, 拥有属性和方法, 可以使用对象, 属性或对象, 方法对其进行访问
python
f = open('python.txt', 'r', encoding = "UTF-8")
print(type(f)) # <class '_io.TextIOWrapper'>
mode常用的三中基础访问模式
| 模式 | 描述 |
|---|---|
| r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
| w | 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,原有内容会被删除。如果该文件不存在,创建新文件。 |
| a | 打开一个文件用于追加。如果该文件已存在,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
文件的读取
read() 方法:
python
文件对象.read(num)
num表示要从文件中读取的数据的长度(单位是字节), 如果没有传入 num, ,那么就表示读取文件中所有的数据
python
f = open("python.txt", 'r', encoding='UTF-8')
# 读取10个字节
print(f"读取10个字符的内容: {f.read(10)}")
readlines() 方法
readlines 可以按照行的方式把整个文件中的内容进行一次性读取, 并且返回的是一个列表, 其中每一行的数据为一个元素
python
f = open("python.txt", 'r', encoding='UTF-8')
content = f.readlines()
print(type(content)) # <class 'list'>
print(content) # ['hello xinyan\n', 'hello world\n', 'hello\n']
f.close()
readline() 方法
一次读取一行
python
f = open("python.txt", 'r', encoding='UTF-8')
content = f.readline()
print(content)
content = f.readline()
print(content)
content = f.readline()
print(content)
# 关闭文件
f.close()
输出:
hello xinyan
hello world
hello
for 循环读取文件行
python
f = open("python.txt", "r", encoding = 'utf-8')
for line in f:
print(line)
文件的关闭
python
f.open("python.txt", "r", encoding = "UTF-8")
f.close()
最后通过close, 关闭文件对象, 也就是关闭对文件的占用
如果不调用close, 同时程序没有停止运行,那么这个文件就将一直被python程序占用
with open 语法
python
with open("python.txt", "r", encoding = "UTF-8") as f:
for line in f:
print(f"每一行数据是: {line}")
通过在with open 的语句块中对文件进行操作, 可以在操作完成后自动关闭close 文件, 避免遗忘掉close方法
文件的写入
当 mode = "w" 的模式打开文件, 如果不存在文件, 会创建一个新的文件
writh() 写入内容
flush() 刷新内容到硬盘中
文件写入通过 write() 方法
python
f = open("python.txt", "w", encoding="utf-8")
f.write("hello world")
f.flush()
注意: 直接调用write, 内容并没有真正写入文件, 而且会积攒在程序的内存中, 称之为缓冲区当调用 flush 的时候, 内容会真正写入文件, 这样做是避免频繁的操作硬盘, 导致效率下降
close() 方法是内置flush() 的功能的, 如果不调用flush() 方法, 但是调用了close() 方法, 同样文件也是会写入内容的
文件的追加写入
打开方式
python
f = open("python.txt", "a", encoding="utf-8")
通过write() 方法写入新的内容
python
f = open("python.txt", "w", encoding="utf-8")
f.write("hello world")
f.close()
f = open("python.txt", "a", encoding="utf-8")
f.write("\nhello world")
f.close()
文件内容
hello world
hello world