文件及其应用场景

文件及其应用场景

一, 文件的定义

文件的概念

  • 内存中存放的数据在计算机关机后就会消失.要长久保存数据,就要使用硬盘、光盘、U 盘等设备.为了便于数据的管理和检索,引入了"文件"的概念.

  • 一篇文章、一段视频、一个可执行程序,都可以被保存为一个文件,并赋予一个文件名。操作系统以文件为单位管理磁盘中的数据。一般来说,文件可分为文本文件、视频文件、音频文件、图像文件、可执行文件等多种类别.

文件操作的作用

  • 在日常操作中,我们对文件的主要操作:

    • 创建文件,
    • 打开文件,
    • 读写操作,
    • 关闭文件,
  • 文件操作的作用就是把一些内容(数据)存储存放起来,可以让程序下一次执行的时候直接使用,而不必重新制作一份,省时省力.

二, 文件的路径

1. 文件的绝对路径

绝对路径表示绝对概念, 一般都是从盘符开始 , 然后一级一级线下查找(不能越级), 直到找到我们要访问的文件即可.

比如访问C盘路径下的Python文件夹下面的python文件, 其完整路径:

Windows
C:\Python\python.txt

绝对路径一般路径固定了, 文件就不能进行移动, 另外在迁移的过程中会比较麻烦.

2. 文件的相对路径

相对路径表示相对概念, 不需要从盘符开始, 首先需要找到一个参考点 (就是Python文件本身)

  • 同级关系: 我们要访问的文件与Python代码处于同一个目录, 平行关系, 同级关系的访问可以使用 ./文件名称或者直接写文件名称即可.
  • 上级关系: 如果我们要访问的文件在当前Python代码的升一级目录, 则我们可以通过==…/来访问上一级路径(如果是多级, 也可以通过…/…/…/==去一层一层向上访问).
  • 下级关系: 如果我们要访问的文件在与Python代码同级的某个文件夹中, 则我们可以通过==文件夹名称/==来访问某个目录下的文件.

三, open()函数打开文件

在Python,使用open()函数, 打开一个已经存在的文件, 或者创建一个新文件.

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):

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()方法: 主要用于文本类型数据的读取.
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()方法: 一次读取一行内容, 每元运行一次readline()函数, 其就会将文件的指针向下移动一行.

# 1. 打开文件
f = open('python.txt')
# 2. while循环创建一个死循环
while True:
	# 读取一行内容
	content = file.readline()
	# 判断是否读取到内容
	if not content:
		# 如果没有读取到内容, 则跳出循环
		break
	# 如果读取到内容, 则输出
	print(content)	

# 关闭文件
f.close()

四, 文件操作的mode模式

模式 描述
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: 文件操作相关的函数有哪些

    • 打开文件: open()
    • 读取数据: read(), readline(), readlines()
    • 关闭文件: close()
  • Q2: 文件操作的mode模式有哪些

    • r读, w写, a追加
    • r+, w+, a+ 代加号,功能全,既能读,又能写(区别在于指针到底指向不同).
    • rb, wb, ab代 b的字符,代表以二进制的形式对其进行操作,适合读取文本或二进制格式文件,如图片、音频、视频等格式.
    • rb+,wb+,ab+ 代加号,功能全,既能读,又能写(区别在于指针到底指向不同).

你可能感兴趣的:(python)