python入门
Day 09
一、文件操作的模式与控制文件读写内容的模式
文件的打开模式分两大类
1、控制文件读写操作的模式
- r:只读(默认的):在文件不存在时则报错,文件存在时候指针调到文件开头
- w: 只写:在文件不存在时则创建空文件,文件存在时则清空,文件指针跳到文件开头
- a:只追加写:在文件不存在时则创建空文件,文件存在时也不会清空,文件指针跳到文件末尾
总结:w与a的异同
相同点:在打开了文件不关闭的情况下,连续地写入,新的内容永远跟在老内容之后
不同点:重新打开文件,w会清空老的内容,而a模式会保留老的内容并且指针跳到文件末尾
控制文件读写内容的模式
1、t
(默认):读写都是以str
字符串为单位,一定要指定encoding
2、b
: 读写都是以bytes
为单位,一定不能指定encoding
参数
二、读写相关方法
读相关方法
read()
方法用于从文件读取指定的字节数,如果未给定或为负则读取所有
fileObject.read(size);
size – 从文件中读取的字节数,返回从字符串中读取的字节。
readline()
方法用于从文件读取整行,包括 “\n” 字符。如果指定了一个非负数的参数,则返回指定大小的字节数,包括 “\n” 字符
fileObject.readline(size)
size – 从文件中读取的字节数,返回从字符串中读取的字节。
readlines()
方法用于读取所有行(直到结束符)并返回列表,该列表可以由 Python 的 for… in … 结构进行处理。如果碰到结束符 EOF 则返回空字符串。
fileObject.readlines( );
无参数,返回列表,包含所有的行
with open(r"C:\Users\S\Desktop\userdata.txt", mode="rt", encoding="utf-8") as f:
data = f.readlines()
print(data)
-------------------------------
['qwwer:1234\n', '98777:12345\n', '2548:121\n', '1:1111\n', 'egon:1212\n', 'tank:dddd\n', 'mc:0909\n', 'gbq:555\n', 'v:v\n', 'fff:fff']
写相关方法
write()
方法用于向文件中写入指定字符串。在文件关闭前或缓冲区刷新前,字符串内容存储在缓冲区中,这时你在文件中是看不到写入的内容的。如果文件打开模式带 b,那写入文件内容时,str (参数)要用 encode 方法转为 bytes 形式,否则报错:TypeError: a bytes-like object is required, not ‘str’
fileObject.write( [ str ])
str – 要写入文件的字符串,返回的是写入的字符长度。
注:可以与flush连用即写即存但是比较占用内存
flush() 方法是用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区写入但是比较占用内存
fileObject.flush(); # 无参数 无返回值
指针移动
seek() 方法用于移动文件读取指针到指定位置。
fileObject.seek(offset[, whence])
- offset – 开始的偏移量,也就是代表需要移动偏移的字节数
- **whence:**可选,默认值为 0。给offset参数一个定义,表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。
注: seek 方法通常与telll方法一起用
tell() 方法返回文件的当前位置,即文件指针当前位置
fileObject.tell() # 无参数 返回文件指针的当前位置。
控制文件内指针的移动都是以字节为单位,只有一种特殊情况,t
模式下的read(size)
,代表的是size
个字符,此外代表的全都是字节
模式
0模式:参照文件的开头开始移动(只有0模式可以在t
下使用,1和2模式只能在b
下使用)
**1模式:**参照指针当前所在的位置
2模式: 参照文件末尾的位置
本文地址:https://blog.csdn.net/A1L__/article/details/107392981