内存中存放的数据在计算机关机后就会消失.要长久保存数据,就要使用硬盘、光盘、U 盘等设备.为了便于数据的管理和检索,引入了"文件"的概念.
一篇文章、一段视频、一个可执行程序,都可以被保存为一个文件,并赋予一个文件名。操作系统以文件为单位管理磁盘中的数据。一般来说,文件可分为文本文件、视频文件、音频文件、图像文件、可执行文件等多种类别.
在日常操作中,我们对文件的主要操作:
文件操作的作用就是把一些内容(数据)存储存放起来,可以让程序下一次执行的时候直接使用,而不必重新制作一份,省时省力.
绝对路径表示绝对概念, 一般都是从盘符开始 , 然后一级一级线下查找(不能越级), 直到找到我们要访问的文件即可.
比如访问C盘路径下的Python文件夹下面的python文件, 其完整路径:
Windows
C:\Python\python.txt
绝对路径一般路径固定了, 文件就不能进行移动, 另外在迁移的过程中会比较麻烦.
相对路径表示相对概念, 不需要从盘符开始, 首先需要找到一个参考点 (就是Python文件本身)
在Python,使用open()函数, 打开一个已经存在的文件, 或者创建一个新文件.
f = open(name, mode)
# 注: 返回的结果是一个file文件对象 (后续会学习, 只需记住, 后续方法都是f.方法())
# name: 是要打开的目标文件的字符串(可以包含文件所在的具体路径).
# mode: 设置打开文件的模式(访问模式): 只读r, 写入w, 追加a, ...
r模式: 代表以只读模式打开一个已经存在的文件, 后续我们对这歌文件直接进行读取操作. 如果文件不存在, 则直接报错. 另外, r模式在打开文件时, 会将光标放在文件的第一行 (开始位置).
w模式: 代表以只写的模式打开一个文件, 文件不存在, 则自动创建该文件. w模式主要是针对文件写入而定义的模式. 但是, 要特别注意, w模式在写入时, 光标也是置于第一行同时还会清空原有文件内容.
a模式: 代表以追加模式打开一个文件, 文件不存在, 则自动创建改该文件. a模式主要也是针对文件写入而定义的模式. 但是与w模式有所不同, a模式不会清空文件的原有内容, 而是在文件的尾部追加内容.
# 1. 打开文件
f = open('python.txt', 'w', encoding = 'utf-8')
# 2. 写入内容
f.write('人生苦短, 我学Python! ')
# 3. 关闭文件
f.close()
强调一下: 解决中文乱码问题, 默认情况下, 计算机常用编码ASCII, GBK, UTF-8
read(size)方法: 主要用于文本类型或者二进制文件 (图片, 音频, 视频, …) 数据的读取
size表示要从文件中读取的数据的长度 (单位是字符/字节), 如果没有传入size, 那么就表示读取文件中所有的数据.
# f.read() # 读取文件的所有内容
# f.read(1024) # 读取1024个字符长度的文件内容, 字母或数字
# 1. 打开文件
f = open('python.txt', 'r', encoding = 'utf-8')
# 2. 使用read()方法读取文件所有内容
contents = f.read()
print(contents)
# 3. 关闭文件,
f.close()
readlines()方法: 主要用于文本类型数据的读取.
readlines()可以按照行的方式把整个文件中的内容进行一次性读取, 并且返 回的是一个列表, 其中每一行的数据为一个元素.
# 1. 打开文件
f = open('python.txt', 'r', encoding = 'utf-8')
# 2. 读取文件
lines = f.realines()
for line in lines:
print(line, end = '')
# 3. 关闭文件
f.close()
readline()方法: 一次读取一行内容, 每元运行一次readline()函数, 其就会将文件的指针向下移动一行.
# 1. 打开文件
f = open('python.txt')
# 2. while循环创建一个死循环
while True:
# 读取一行内容
content = file.readline()
# 判断是否读取到内容
if not content:
# 如果没有读取到内容, 则跳出循环
break
# 如果读取到内容, 则输出
print(content)
# 关闭文件
f.close()
模式 | 描述 |
---|---|
r | 以只读方式打开文件, 文件的指针将会放在文件的开头, 这是默认模式. |
rb | 以二进制格式打开一个文件用于只读, 文件指针将会放在文件的开头. 这个默认模式. |
r+ | 打开一个文件用于读写, 文件指针将会放在文件的开头. |
rb+ | 以二进制格式打开一个文件用于读写,文件指针将会放在文件的开头. |
w | 打开一个文件只用于写入,如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除,如果该文件不存在,创建新文件. |
wb | 以二进制格式打开一个文件只用于写入.如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件. |
w+ | 打开一个文件用于读写.如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除.如果该文件不存在,创建新文件. |
wb+ | 以二进制格式打开一个文件用于读写.如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除.如果该文件不存在,创建新文件. |
a | 打开一个文件用于追加.如果该文件已存在,文件指针将会放在文件的结尾.也就是说,新的内容将会被写入到已有内容之后.如果该文件不存在,创建新文件进行写入. |
ab | 以二进制格式打开一个文件用于追加.如果该文件已存在,文件指针将会放在文件的结尾.也就是说,新的内容将会被写入到已有内容之后.如果该文件不存在,创建新文件进行写入. |
a+ | 打开一个文件用于读写.如果该文件已存在,文件指针将会放在文件的结尾.文件打开时会是追加模式.如果该文件不存在,创建新文件用于读写. |
ab+ | 以二进制格式打开一个文件用于追加.如果该文件已存在,文件指针将会放在文件的结尾.如果该文件不存在,创建新文件用于读写. |
虽然mode文件操作模式很多,但是我们只需要记住3个字符(r, w, a)即可.
r+, w+, a+ 代加号,功能全,既能读,又能写(区别在于指针到底指向不同)
rb, wb, ab代 b的字符,代表以二进制的形式对其进行操作,适合读取文本或二进制格式文件,如图片、音频、视频等格式
rb+,wb+,ab+ 代加号,功能全,既能读,又能写(区别在于指针到底指向不同)
Q1: 文件操作相关的函数有哪些
Q2: 文件操作的mode模式有哪些