python文件操作

python文件操作

一、概述

​ python文件操作我们主要需要掌握文件的打开方式,以及打开文件时的各种常见模式。写文档方式,以及关闭文档。

二、文件的访问模式

​ 文件的访问模式,在后面我们打开文件的时候使用。用于我们打开后对文件的访问权限进行控制。

模式 描述
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从头开始编辑,即原有内容会被删除。如果该文件不存在,则创建新文件
wb 以⼆进制格式打开⼀个⽂件只⽤于写⼊。如果该⽂件已存在则打开⽂件,并从开头开始编辑,即原有内容会被删除。如果该⽂件不存在,创建新⽂件。
w+ 打开⼀个⽂件⽤于读写。如果该⽂件已存在则打开⽂件,并从开头开始编辑,即原有内容会被删除。如果该⽂件不存在,创建新⽂件。
wb+ 以⼆进制格式打开⼀个⽂件⽤于读写。如果该⽂件已存在则打开⽂件,并从开头开始编辑,即原有内容会被删除。如果该⽂件不存在,创建新⽂件。
a 打开⼀个⽂件⽤于追加。如果该⽂件已存在,⽂件指针将会放在⽂件的结尾。也就是说,新的内容将会被写⼊到已有内容之后。如果该⽂件不存在,创建新⽂件进⾏写⼊。
ab 以⼆进制格式打开⼀个⽂件⽤于追加。如果该⽂件已存在,⽂件指针将会放在⽂件的结尾。也就是说,新的内容将会被写⼊到已有内容之后。如果该⽂件不存在,创建新⽂件进⾏写⼊。
a+ 打开⼀个⽂件⽤于读写。如果该⽂件已存在,⽂件指针将会放在⽂件的结尾。⽂件打开时会是追加模式。如果该⽂件不存在,创建新⽂件⽤于读写。
ab+ 以⼆进制格式打开⼀个⽂件⽤于追加。如果该⽂件已存在,⽂件指针将会放在⽂件的结尾。如果该⽂件不存在,创建新⽂件⽤于读写。

权限矩阵

功能 r r+ w w+ a a+
+ + + +
+ + + + +
创建 + + + +
覆盖 + +
指针在开头 + + + +
直接在结尾 + +

这里我们不用死记硬背,通过字母的意思我们就比较容易得理解其权限意义。

  • r (read)

    有r 表示有读文件权限。并且一般读文件默认都在起始位置,因为读取都是从当前位置向后面读取。(反过来想如果在结尾我们还能想后面读出数据吗)

  • w (write)

​ 有w 表示有写操作权限。写文件默认也是在文件开头。会清空文件之前内容。

  • +

​ 有加号的一般都是有读写权限。

  • b (binary)

​ 表示二进制文件,在不能直接使用字符进行写的文件如mp3、zip等文件不能通过字符去写入,只能通过二进制流写的,需要用该格式。

  • a (append)

​ 具有写权限,并为追加模式。追加都是指针指向从文件末尾,在末尾进行追加写。写权限无果文件不存在也都会创建。不会清空文件之前内容。

三、文件的打开方式

f = open(name, mode)

name: 要打开的文件名,字符串类型。(可以包含文件所在的具体路径)

mode: 上面部分我们列举的模型,只读,读写,追加等。。字符串类型。

示例:

python 复制代码
f = open('test.txt', 'w')

四、文件的关闭

语法: f.close()

示例:

python 复制代码
# 新建⼀个⽂件,⽂件名为:test.txt
f = open('test.txt', 'w')
# 关闭这个⽂件
f.close()

五、 写数据

语法:f.write('str')

python 复制代码
f = open('test.txt', 'w')
f.write('hello')
f.close()

六、 读数据

1. read(num)

语法: content = f.read(num)

content: 读取的内容。

num: 读取的数据长度(二进制时单位为字节,普通文本模式为字符数)

python 复制代码
f = open('test.txt', 'w+')
f.write('你a好')
f.close()

ff = open('test.txt', 'r')
read = ff.read(2)
print(read)# 你a
ff.close()

2. readlines()

​ 就像read没有参数时⼀样,readlines可以按照⾏的⽅式把整个⽂件中的内容进⾏⼀次性读取,并且返回的是⼀个列表,其中每⼀⾏的数据为⼀个元素。

python 复制代码
#coding=utf-8
f = open('test.txt', 'r')
content = f.readlines()
print(type(content))
i=1
for temp in content:
	print("%d:%s" % (i, temp))
	i += 1
f.close()

""" 输出
<class 'list'>
1:你a好

2:这是什么

"""

3. readline()

​ readline()⼀次读取⼀⾏内容,包含每行结尾的换行符。读取后指针位置下移一行。

python 复制代码
f = open('test.txt', 'r')
content = f.readline()
print("1:%s" % content , end="")
content = f.readline()
print("2:%s" % content, end="")
f.close()

"""test.txt
你a好
这是什么
"""
"""输出
1:你a好
2:这是什么
"""

七、 文件的定位读写

1.获取当前指针的位置(距离文件开头字节长度)

语法:position = f.tell()

每次read(n)之后 文件指针位置会向后移动n位。

python 复制代码
"""test.txt 文件内容
你a好
这是什么
"""
#coding=utf-8

# 打开⼀个已经存在的⽂件
f = open("test.txt", "r")
str = f.read(3)# 一个中文字符占两个字节
print(f"读取的数据是 : {str}")
# 查找当前位置
position = f.tell()
print(f"当前⽂件位置 : {position}")
str = f.read(3) # 一个换行符占一个字节
print(f"读取的数据是 : {str}")
# 查找当前位置
position = f.tell()
print(f"当前⽂件位置 : {position}")
f.close()
"""输出
读取的数据是 : 你a好
当前⽂件位置 : 5
读取的数据是 : 
这是
当前⽂件位置 : 11
"""

2.定位到某个位置

如果在读写⽂件的过程中,需要从另外⼀个位置进⾏操作的话,可以使⽤

seek()

seek(offset, from)有2个参数

  • offset:偏移量
  • from:⽅向
    • 0:表示⽂件开头
    • 1:表示当前位置
    • 2:表示⽂件末尾

demo:把位置设置为:从⽂件开头,偏移5个字节

python 复制代码
# 打开⼀个已经存在的⽂件
f = open("test.txt", "r")
str = f.read(30)
print("读取的数据是 : %s" % str)
# 查找当前位置
position = f.tell()
print("当前⽂件位置 : %s" % position)
# 重新设置位置
f.seek(5,0)
# 查找当前位置
position = f.tell()
print("当前⽂件位置 : %s" % position)
f.close()

"""
读取的数据是 : 你a好
这是什么
当前⽂件位置 : 15
当前⽂件位置 : 5
"""
相关推荐
gkdpjj1 分钟前
C++优选算法十四 优先级队列(堆)
开发语言·数据结构·c++·算法
Elihuss2 小时前
ONVIF协议操作摄像头方法
开发语言·php
Swift社区5 小时前
在 Swift 中实现字符串分割问题:以字典中的单词构造句子
开发语言·ios·swift
没头脑的ht5 小时前
Swift内存访问冲突
开发语言·ios·swift
没头脑的ht5 小时前
Swift闭包的本质
开发语言·ios·swift
wjs20246 小时前
Swift 数组
开发语言
stm 学习ing7 小时前
FPGA 第十讲 避免latch的产生
c语言·开发语言·单片机·嵌入式硬件·fpga开发·fpga
湫ccc7 小时前
《Python基础》之字符串格式化输出
开发语言·python
mqiqe8 小时前
Python MySQL通过Binlog 获取变更记录 恢复数据
开发语言·python·mysql