Python基础篇(文件操作)
一.初始文件操作
使用python来读写文件是非常简单的操作. 我们使用open()函数来打开一个文件, 获取到文件句柄. 然后通过文件句柄就可以进行各种各样的操作了. 根据打开方式的不同能够执行的操 作也会有相应的差异.
打开文件的方式: r, w, a, r+, w+, a+, rb, wb, ab, r+b, w+b, a+b 默认使?的是r(只读)模式
二.只读操作(r,rb)
f = open("护士少妇嫩模.txt",mode="r", encoding="utf-8") 注意:encoding表示编码集,根据文件对的实际保存编码进行获取数据,对于我们而言,更多的是UTF-8 content = f.read() print(content) f.close()
rb.读取出来的数据是bytes类型, 在rb模式下. 不能选择encoding字符集.
f = open("护士少妇嫩模.txt",mode="rb" ) rb作用:在读取非文本文件的时候. 比如读取MP3. 图像. 视频等信息的时候就需要用到rb.因为这种数据是没办法直接显示出来的.
在后面我们文件上传下载的时候还会用到. 还有. 我们看的直播. 实际上都是这种数据 content = f.read() print(content) f.close() 结果: b‘\xe6\xaf\x85\xe5\x93\xa5, \xe5\xa4\xaa\xe7\x99\xbd, wuse\n\xe5\x91\xb5\xe5\x91\xb5\n\xe6\x97\xa5\xe5\xa4\xa9‘
绝对路径和相对路径:
1.绝对路径:从磁盘目录开始一直到文件名
2.相对路径:同一个文件夹下的文件,相当于当前这个程序的文件夹而言,如果在同一个文件夹中则相对路径就是这个文件名.如果再上一个文件夹中.则要 ../
推家使用:相对路径,因为在把程序拷贝给别人使用的时候,直接把项目拷贝走就能运行,但是如果用绝对路径,,那还需要拷贝外部文件
读取文件方法:
1.read() 将文件中的内容全部读取出来.弊端,占内存比较大,如果文件大可能会导致内存崩溃
f = open("../def/哇擦.txt", mode="r", encoding="utf-8") content = f.read() print(content) 结果: 友谊地久天长, 爱和点, 可惜我是水瓶座 心中最爱
2. read(n) 读取n个字符,需要注意:如果再次读取那么会从当前位置开始读取,而不是重新开始,如果使用rb模式,则读取出来是n个字节
f = open("../def/哇擦.txt", mode="r" encoding="utf-8") content = f.read(3) print(content) 结果: 友谊地 f = open("../def/哇擦.txt", mode="rb") content = f.read(3) print(content) 结果: b‘\xe5\x8f\x8b‘ f = open("../def/哇擦.txt", mode="r", encoding="utf-8") content = f.read(3) content2 = f.read(3) print(content) print(content2) 结果: 友谊地 久天长
3.readline()一次读取一行数据,注意:readline结尾 注意每次读取出来的数据都会有一个/n 所以呢我们需要用strip()方法去掉/n或者空格
f = open("../def/哇擦.txt", mode="r", encoding="utf-8") content = f.readline() content2 = f.readline() content3 = f.readline() content4 = f.readline() content5 = f.readline() content6 = f.readline() print(content) print(content2) print(content3) print(content4) print(content5) print(content6) 结果: 友谊地久天c hang, 爱可点, 可惜我是?瓶座 心中最爱
4.readlines()将每一行形成一个元素放到一个列表中将所有的内容读取出来所以也是容易出现内存崩溃的问题.不推荐使用
f = open("../def/哇擦.txt", mode="r", encoding="utf-8") lst = f.readlines() print(lst) for line in lst: print(line.strip())
5.循环读取,这种方式是最好的,每次读取一行内容不会产生内存溢出的问题
原文:https://www.cnblogs.com/yaozhiqiang/p/9174811.html