python 编程开发 —— 文件(File)操作

文档声明:
以下资料均属于本人在学习过程中产出的学习笔记,如果错误或者遗漏之处,请多多指正。并且该文档在后期会随着学习的深入不断补充完善。感谢各位的参考查看。


笔记资料仅供学习交流使用,转载请标明出处,谢谢配合。
如果存在相关知识点的遗漏,可以在评论区留言,看到后将在第一时间更新。
作者: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
>>> 

猜你喜欢

转载自blog.csdn.net/Aliven888/article/details/114545277