此文章仅为自己学习记录之用,如有不正确的地方欢迎指正,非常感谢
目录
2.1.读取函数read/readline/readlines
导读:
说把大象装冰箱?拢共分几步?
1.把冰箱门开开
2.把大象装进去
3.把冰箱门关上
我们文件读写也是如此,就3步
a.打开文件:调用open函数,返回一个File对象
b.读写:调用File对象的read和write方法
c.关闭文件:调用File对象的close方法关闭文件
1.open函数
用法:
f = open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
字符释义:
f-open函数返回的文件对象,也可以叫文件描述符或句柄
file-要打开的文件的路径
mode-指定文件打开的模式,这个参数决定了我们可以怎样操作文件
打开文件的模式有
r | 只读模式,从头开始读取 |
w | 写入模式,文件不存在则新建文件,文件存在则清空内容,从头开始写入 |
x | 创建模式,文件不存在则会新建文件,文件存在则追加到文件中 |
a | 追加模式,文件不存在则新建文件,文件存在则保留文件内容,从内容的结尾开始写入 |
b | 文件以二进制模式打开,不可单独使用,需要与r/w/a连用,如rb就是以二进制模式读取 |
t | 文件以文本模式打开,文件需要是文本文件。不可单独使用,需要与r/w/a连用。是默认的模式,即只有r/w/a也默认是文本模式打开。 |
+ | 可以同时读写文件。不可单独使用,需要与r/w/a连用。如r+则代表可以读写文件,但是写入时也是从头开始写入,会覆盖原有位置的内容。w+也可以读写,但是会将原内容删除。a+也可以读写,与a对应是从末尾开始读写。也可以与b连用,如r+b等 |
buffering-缓冲策略选择,默认为1,初学者可暂时不用理会
encoding-打开文件时所采用的编码格式。默认为None,表示的是使用系统默认的编码格式例如 'utf-8'
errors-用于指定在文件读取或写入时遇到编码错误时的处理方式,一般有以下几种
默认值/None | 遇到编码错误的时候抛出一个UnicodeError异常 |
ignore | 忽略无法解码或编码的字符,直接跳过 |
replace | 用于指定字符(默认是"?")替代无法解码或编码的字符 |
strict | 遇到无法解码或者编码的字符的时候抛出一个UnicodeError异常 |
newline-指定在读取和写入文件时使用的换行符。它的默认值为 None,表示使用系统默认的换行符。
closefd-用于指定关闭文件时是否关闭文件描述符,也就是上面的f;True就是关闭,Flase就是关闭文件时不会关闭文件描述符。默认值为True
opener-用于指定自定义的文件打开器。如果不指定值则使用默认的文件打开器
2.读取/写入文件内容
2.1.读取函数read/readline/readlines
用法:f.read(size)
作用:返回部分或者整个文本的内容。
字符释义:f-文件描述符;size-返回内容的大小,可以不指定,不指定就默认返回整个文本的内容;
返回值:字符串
用法:f.readline(size)
作用:返回文本中一行部分或全部的内容
字符释义:f-文件描述符;size-返回内容的大小,可以不指定,不指定就默认返回一行,指定的大小若不满一行就按指定的来,超过一行则返回一行;
返回值:字符串
用法:f.readlines()
作用:返回文本中所有内容
字符释义:f-文件描述符
返回值:字符串列表,其中列表中一个元素即为一行的内容
注:读取文本时如果一次没有读完,再一次读取时不会从头开始,而是从上次结束的位置开始。
2.2.写入函数write
用法:f.write(str)
作用:往文本中写入内容
字符释义:f-文件描述符;str-字符串
3.关闭文件
用法:f.close()
作用:关闭文件
字符释义:f-文件描述符
下面是一个简单的示范
注意啦!!!一定要关闭文件!!!虽然我也不指定会发生什么哈哈哈哈哈,但是为了电脑着想,我劝你不
如果害怕自己忘记可以用另一种方式,会自动关闭,就可以不用close了
with open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) as f:
f.read()
下面是一些简单的效果,大家可以自己多试试不同的效果~
这是写的效果
f = open('D:/shifan.txt','w',encoding='utf8')
f.write('111111111\n22222222222\n33333333333')
f.close()
运行上面的代码,你的D盘就会多出一个这样的txt
这是读的效果
f = open('D:/shifan.txt','r',encoding='utf8')
contxt1 = f.read(12)
contxt2 = f.read(12)
f.close()
print(contxt1)
"""
contxt1返回
111111111
22
"""
print(contxt2)
"""
contxt1返回
222222222
33
"""
f1 = open('D:/shifan.txt','r',encoding='utf8')
contxt3 = f1.readline(15)
f1.close()
print(contxt3)#返回 111111111
f2 = open('D:/shifan.txt','r',encoding='utf8')
contxt3 = f2.readlines()
f2.close()
print(contxt3)#返回 ['111111111\n', '22222222222\n', '33333333333']
其它的自己试试叭~