虽然视频、音频和图片在硬盘中也是用二进制存储的,但是上一章节讲的字符编码只和文本文件有关,因为‘utf-8’格式的编码并不使用视频,视频有其本身的编码格式,如MP4、avi、mkv等。
一、什么是文件?
文件是操作系统为用户或应用程序提供的一个读写硬盘的虚拟单位。文件的操作是基于文件,即文件的操作核心就是:读和写。也
就是只要我们想要操作文件就是对操作系统发起请求,然后由操作系统将用户或应用程序对文件的读写操作转换成集体的硬盘指令(比如控制盘片转动,控制机械手臂移动,以此来读取数据)。
二、为什么要有文件?
内存无法永久保存数据,但凡我们想要永久保存数据都需要把文件保存到硬盘中,而操作文件就可以实现对硬件的操作。
三、如何用文件?
现在我们有一个需求需要把用户输入的账号密码存储到硬盘中,我们使用Python该如何操作呢?
name = 'nick'
pwd = '123'
3.1 从硬盘中读取数据
如果我们需要打开一个文件,需要向操作系统发起请求,要求操作系统打开文件,占用操作系统资源。Python中使用open()方法可以打开某个具体的文件,open()方法内写入文件路径。
open(r'/Users/mac/desktop/jupyter/pythonCourseware/32.txt')
如果给列表增加值,我们需要给列表赋值后才能给对应的列表增加值。文件也是如此。
lis = [1,2,3]
lis.append(4)
lis.append(5)
# 打开文件
f = open(r'/Users/mac/desktop/jupyter/pythonCourseware/32.txt')
print(f)
<_io.TextIOWrapper name='/Users/mac/desktop/jupyter/pythonCourseware/32.txt' mode='r' encoding='UTF-8'>
打开文件之后,文件不仅占用了内存,他还对应了操作系统打开的以文件,相当于使用文本编辑器打开了一个文件。并且我们说了我们操控文件只是为了读和写,因此打开文件并不是目的,读和写才是目的,接下来我们尝试如何读写文件。
# read模式打开文件
f = open(r'/Users/mac/desktop/jupyter/pythonCourseware/32.txt', mode='r')
# 读取文件内容,向操作系统发起读请求,会被操作系统转成具体的硬盘操作,将内容由硬盘读入内存
data = f.read()
print(data)
# 由于Python的垃圾回收机制只回收引用计数为0的变量,但是打开文件还占用操作系统的资源,所以我们需要回收操作系统的资源资源
# del f 只是回收变量f
f.close()
name = 'nick'
pwd = '123'
3.2 写入数据
# write模式打开文件
f = open(r'/Users/mac/desktop/jupyter/pythonCourseware/32.txt', mode='w')
f.write("""name = 'nick'
pwd = '123'""")
f.close()
f = open(r'/Users/mac/desktop/jupyter/pythonCourseware/32.txt', mode='r')
data = f.read()
print(data)
name = 'nick'
pwd = '123'
四、总结
打开文件总而言之分为三步:
- 打开文件
- 读写
- 关闭