【Python】学习笔记总结3(Python文件操作)
文章目录
- 三、Python文件操作
- 1.打开`open(‘文件名’,’打开模式’)`
- 2.写操作
- 3.读操作
- 4.With上下文管理对象
- 小结
- 案例
- 5.文件定位
三、Python文件操作
1.打开open('文件名','打开模式')
fileA = open('./Test.txt','w',encoding='utf-8')
- 打开模式
打开模式 | 模式说明 |
---|---|
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
w | 打开一个文件只用于写入。 如果该文件已存在则将其覆盖。如果该文件不存在, 创建新文件。 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
rb | 以二进制格式打开-一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。 |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
ab | 以二进制格式打开-一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
w+ | 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
rb+ | 以二进制格式打开-一个文件用于读写。文件指针将会放在文件的开头。 |
wb+ | 以二进制格式打开-一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
ab+ | 以二进制格式打开-一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
2.写操作
字符串形式,默认gbk编码
fileA = open(‘./Test.txt’,’w’,encoding=’utf-8’)
fileA.write(‘写入的内容’)
fileA.close()二进制形式写入
fileA = open(‘./Test2.txt’,’wb’)
fileA.write(‘写入的内容’.encode(‘utf-8’))
fileA.close()追加写入a
fileA = open(‘./Test.txt’,’a’)
fileA.write(‘写入的内容’)
fileA.close()追加写入ab
fileA = open(‘./Test.txt’,’ab’)
fileA.write(‘写入的内容’.encode(‘utf-8’))
fileA.close()
3.读操作
读取所有
fileA = open(‘./Test.txt’,’r’,encoding=’utf-8’)
print(fileA.read())
fileA.close()读取几个
fileA = open(‘./Test.txt’,’r’,encoding=’utf-8’)
print(fileA.read(4))
fileA.close()读一行
fileA = open(‘./Test.txt’,’r’,encoding=’utf-8’)
print(fileA.readline())
fileA.close()读所有行
fileA = open(‘./Test.txt’,’r’,encoding=’utf-8’)
print(fileA.readlines())
fileA.close()读取二进制
fileA = open(‘./Test.txt’,’rb’)
data = fileA.read()
print(data)
print(data.decode(‘utf-8’))
fileA.close()
4.With上下文管理对象
自动释放打开关联对象
with open('./Test.txt','rb') as fileA :
data = fileA.read()
print(data)
print(data.decode('utf-8'))
#自动释放
小结
文件读写的几种操作方式
read r r+ rb rb+
r r+ 只读使用普通读取场景
rb rb+ 适用于文件图片视频音频这样文件读取
write WW+ wb+
w ba ab w wb+ W+每次都会去创建文件
二进制读写的时候要注意编码问题,默认情况下我们写入文件的编码是gbk
a ab a+ 在原有的文件的基础之后去[文件指针的末尾]去追加,并不会每次的都去创建一个新的文件
案例
old_file = input('请输入 要备份的文件名:')
file_list=old_file.split('.')
#构造新的文件名.加上备份的后缀
new_file=file_list[0]+'_ 备份. '+file_list[1]
try:
#监视啊哟处理的逻辑
with open(old_file,'r') as old_f,open(new_file,'w')as new_f:
while True:
content=old_f.read(1024) #-次读取1024字符
new_f.write( content)
if len( content)<1024:
break
except Exception as msg:
print (msg )
pass
5.文件定位
tell() 返回指针当前所在的位置
with open(‘./Test.txt’,’r’,encoding=’utf-8’) as fileA :
fileA.read(1)
print(fileA.tell())
fileA.read(2)
print(fileA.tell())
truncate() 对源文件进行截取操作
with open(‘./Test.txt’,’r+’) as fileA :
fileA.truncate(2)
print(fileA.read())
seek() 更改光标指针位置
只有二进制模式打开文件才能更改光标指针位置fileA.seek(-2,0)#0初始位置开始
fileA.seek(-2,1)#1当前位置开始
fileA.seek(-2,2)#2末尾位置开始with open(‘./test.txt’,’rb’) as fileA :
data=fileA.read(2)
print(data.decode('gbk'))
fileA.seek(-2,1)#当前位置向前移动2格
ok = fileA.read(2)
print(ok.decode('gbk'))
还没有评论,来说两句吧...