文档声明:
以下资料均属于本人在学习过程中产出的学习笔记,如果错误或者遗漏之处,请多多指正。并且该文档在后期会随着学习的深入不断补充完善。感谢各位的参考查看。
笔记资料仅供学习交流使用,转载请标明出处,谢谢配合。
如果存在相关知识点的遗漏,可以在评论区留言,看到后将在第一时间更新。
作者:Aliven888
1、背景
我们在程序编程的过程中,都遵循着:输入 -> 处理 -> 输出的模型;首先输入数据,然后按照一定的逻辑进行处理,最后输出处理后的数据。但是有时在 UI(程序可操作界面)的数据并不能很好的满足我们的需求,比如:程序一旦发生问题崩掉了,直接将会到时所有缓存丢失,所有的操作还要重复做一次。这个时候,如果我们引入了文件存储,就能很好的解决该问题(可以直接通过程序从文件内中加载需要输入的内容)。
2、文件操作
2.1、文件操作的BIF
下面是一些常用的文件操作BIF。
名称 | 描述 |
---|---|
open(…) | 打开文件,并返回文件对象 |
read(size = -1) | 从文件读取size个字符,当未给定size或者为负值时,读取剩下的全部字符,然后作为字符串返回 |
readline() | 从字符串中读取一整行字符串 |
write(str) | 将字符串str写入文件 |
writelines(seq) | 向字符串中写入字符串序列seq,seq应该是一个返回字符串的可迭代对象 |
seek(offset, from) | 在文件中移动文件指针,从from(0 代表文件的起始位置,1代表文件的当前位置,2代表文件的末尾)偏移offset个字节 |
tell() | 返回当前在文件中的位置 |
close() | 关闭文件 |
2.2、打开/关闭文件
在 python 中使用 open() 这个函数来打开文件并返回文件的操作对象。而 close() 方法用于关闭文件。虽然在 python 中有垃圾收集机制,会在文件对象引用计数为0时自动关闭文件,但是为了养成良好的编程习惯,这里建议最好手动调用 close() 关闭下,以避免程序突然崩掉导致文件缓存丢失。
格式:
open(name[, mode[, buffering]])
name, # 文件路径,可以是绝对路径,也可以是相对路径
mode = 'r', # 文件的打开模式
#如果 buffering 的值被设为 0,就不会有寄存。
#如果 buffering 的值取 1,访问文件时会寄存行。
#如果将 buffering 的值设为大于 1 的整数,表明了这就是的寄存区的缓冲大小。
#如果取负值,寄存区的缓冲大小则为系统默认。
buffering = -1,
文件打开的模式:
模式 | 描述 |
---|---|
t | 文本模式 (默认)。 |
x | 写模式,新建一个文件,如果该文件已存在则会报错。 |
b | 二进制模式。 |
+ | 打开一个文件进行更新(可读可写)。 |
U | 通用换行模式(不推荐)。 |
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。 |
w | 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
w+ | 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
举例:
操作文件名称 以及 内容。
Aliven.txt
Python test hello world good Python
>>> f = open("D:\Python\P\Aliven.txt", "r") #打开文件
>>> f.read() #读取文件内容
'Python test\nhello world\ngood Python'
>>> f.tell() # 返回当前在文件中的位置
37L
>>> f.read(8) # 因为已经到了文件尾,所以此时无法读物文件内容
''
>>> f.seek(0, 0) # 文件指针偏移到文件头(位置移动到文件头)
>>> f.read(8) # 此时可以读取到内容
'Python t'
>>> f.seek(0, 0)
>>> f.readline() # 按行读取内容
'Python test\n'
>>> f.readline()
'hello world\n'
>>> f.readline()
'good Python'
>>> f.readline() # 因为已经到了文件尾,所以此时无法读物文件内容
''
>>> f.seek(0, 0)
>>> f.readline()
'Python test\n'
>>> f.close() # 关闭文件
>>> f.readline() # 关闭后的文件无法操作,否则会报错
Traceback (most recent call last):
File "<pyshell#19>", line 1, in <module>
f.readline()
ValueError: I/O operation on closed file
>>>