二: 文件的基本操作
1 什么是文件?
文件是操作系统为用户或应用程序提供的一个读写硬盘的虚拟单位
文件的操作核心就:读、写
即我们只需要对于进行读写操作,就是对操作系统发起请求,然后由操作系统将用户或者应用程序
对文件的读写操作转换成具体的硬盘指令(比如控制盘片转动,控制机械手臂移动来读写数据)
2 为什么要有文件?
因为内存无法永久保存数据,但凡我们想要永久保存数据都需要保存到硬盘中,
而操作文件就可以实现对硬件的操作
3 如何用文件
name='egon'
pwd='123'
把内存中的数据存储到硬盘中去
l=[1,2,3]
l.append(4)
l.append(5)
print(l)
把硬盘中的数据读到内存中
rawstring
f=open(r'E:SH_fullstack_s2day08a.txt',mode='r') # 向操作系统发起请求,要求操作系统打开文件,占用操作系统的资源
f1=10
f2='aaaa'
f2.index() f=open open 占的是应用程序的空间
print(f)
y=2
data=f.read() # 向操作系统打开发起读请求,会被操作系统转成具体的硬盘操作,将内容由硬盘读入内存
print(data)
del f
f.close() #向操作系统发起请求,要求操作系统关闭文件,回收系统资源
print(f)
f.read()
关键三步
f=open(r'路径',mode='r')#向操作系统发起请求
data=f.read()
print(data)
f.close()
总结:
1、打开文件
2、读写
3、关闭
三: 绝对路径和相对路径
绝对路径:从盘符开始写的一个完整的路径
相对路径:相对于当前执行文件所在的文件夹开始找
f=open(r'a.txt)
控制读写文件内容的结果有两种:t模式text,b模型bytes
注意:
1、t与b这两种模式均不能单独使用,都需要与r/w/a之一连用
2、默认的内容格式是t
3、只有文本文件才能用t模式,也只有文本文件才有字符编码的概念
操作文件的基础模式有三种:
1、r,默认的
2、w
3、a
四:read,只读模式
1、只能读,不能写
2、在文件不存在时,会报错,在文件存在的时候会将文件指针移动到开头
f=open(r'b.txt',mode='rt',encoding='utf-8') data1=f.read() print('第一次:',data1) print(type(data1)) data2=f.read() #文件读的时候指针一点一点往后移 print('第二次:',data2) print(f) f.close() f=open(r'b.txt',mode='rt',encoding='utf-8') data2=f.read() print('第二次:',data2) f.close() f=open(r'b.txt',mode='rt',encoding='utf-8') data2=f.read() print('第二次:',data2) f.close()
只读模式的其他两种用法
f=open(r'b.txt',mode='rt',encoding='utf-8') print(f.readable()) print(f.readline(),end='') print(f.readline(),end='') lines=f.readlines() print(lines) f.close()
五:只写模式
w:只写模式
1、只能写,不能读
2、在文件不存在时会创建空文件,在文件存在的时候会将文件内容清空
f=open(r'c.txt',mode='wt',encoding='utf-8') f.write('你好啊我的天 你好啊我的地 啊啊啊啊啊啊 ') #文件是先干没,然后把文件内容写进去
f=open(r'c.txt',mode='wt',encoding='utf-8')
f.write('你好啊我的天 你好啊我的地 啊啊啊啊啊啊 ')
f.write('4444 ')
f.write('5555')
只写模式的另外两种形式
f=open(r'c.txt',mode='wt',encoding='utf-8') lines=['1111 ','2222 ','3333355 '] # for line in lines: # f.write(line) f.writelines(lines) 这一行相当于上面#两行 f.close()
六:a:只追加写模式
1、只能写,不能读
2、在文件不存在时会创建空文件,在文件存在的时候会将指针移动到文件末尾
f=open('d.txt',mode='at',encoding='utf-8') print(f.readable()) f.read() f.write('555555 6666 ') f.writelines(['77777 ','8888888 ','999999999 ']) #相当于一个for 循环
f.close()
七:文件打开模式之b模式
b:二进制模式
注意:
1、一定不能指定字符编码,只有t模式才与字符编码有关
2、b是二进制模式,是一种通用的文件读取模式,因为所有的文件在硬盘中都是以二进制形式存放的
f=open('egon.jpg','rb') data=f.read() print(type(data)) f.close()
边读边写
f=open('oldsiji.mp4','rb') data=f.read() f.close() f=open(r'D:王苗鲁.mp4','wb') f.write(data) f.close()