三、文件操作
1、文件操作
从硬盘中读取utf-8编码的数据,字符串转换成unicode编码的数据到内存中,文件在硬盘上时,一定是utf-8、gbk等模式的二进制编码
文件操作的三要素
1. 路径:D:\美女模特空姐护士联系方式.txt
2. 编码:utf-8
3. 模式:
- rb
- r
- r+
-r+b
- wb
- w
- w+b
- ab
- a
- a+
- a+b
1.1 open()、read()、close()
PS: 打开文件后,记着关闭文件
obj = open(文件路径,mode='rb')
xxxx
obj.close()
自动关闭
with open(文件路径,mode='rb') as obj:
obj.read()
# 代码执行完毕后,自动关闭文件
读文件
1.1.1 rb、r
网络编程的时候,有图片、音乐、视频等格式的文件用rb、wb格式
obj = open('D:\美女模特空姐护士联系方式.txt',encoding='utf-8',mode='r')
content = obj.read()
obj.close()
print(content,type(content))
打开windows下的文件开始要加双斜线或加'r'
1.1.2 r+、r+b
读写,文件先读再追加
#打开文件的时候:不清空文件
#当用户读取操作之后,写的所有内容都变成追写
#当用户不执行读操作,写默认从开始覆盖
不要同时又读又写
1.2 write()、writelines()
write() 写一个文件
writelines() 将一个列表的内容写入文件
1.2.1 wb、w、w+b
原文件不存在则创建文件,原文件存在则将原文件覆盖
1.2.2 ab、a、a+、a+b
追加,原文件不存在则创建文件,原文件存在则在文件后追加内容
1.3 seek()
将光标指定到指定位置
seek(2) 指的是光标在第二个自己后面
read(2) 如果是'r'模式则读前两个字符,如果是'rb'模式则读前两个字节
控制光标的位置
三种模式
0模式、1模式、2模式
默认0模式光标以文件开头为参照位置
1和2模式必须在b模式下使用
1模式光标以当前光标所在的位置为参照位置
2模式光标以文件结尾为参照位置
1.4 tell()
读取当前光标所在位置
1.5 flush()
将内存中内容刷到硬盘
1.6 readline()、readlines()
readline() 读一行,返回一个字符串
readlines() 读整个文件,返回一个列表,每行是一个元素
1.7 for循环
一行一行的读出来
# 等价于 py2 obj.xreadlines()
for line in obj:
print(line)
1.8 文件修改
固定模式:
#读写
#修改
f = open('file',encoding='utf-8')
f2 = open('file_bak','w',encoding='utf-8')
for line in f:
user_list = line.split('|')
print(user_list)
user_list[0] = user_list[0]+'_somebody'
#print(user_list)
user_str = '|'.join(user_list)
print(user_str)
f2.write(user_str)
f.close()
f2.close()
import os #模块- 用来和操作系统交互的模块
os.remove('file') #删除一个文件
os.rename('file_bak','file') #重命名一个文