python-day10--文件处理

时间:2023-03-09 02:51:59
python-day10--文件处理

1.文件:是操作系统提供的概念

2. open(r+'文件路径' , '打开方式' , '用什么字符编码')   #r 表示原始字符串

eg:open(r'C:\Users\13264\Desktop\aaaa.py','r',encoding='utf-8')

3.文件打开:

f=open(r'aaaa.py')

这个过程等于干了两件事:第一是操作系统打开文件,第二是在内存中开空间存一个变量

4.文件回收:

f.close    # 这是在关闭操作系统级别占有的内存

5.文件的处理方法:

①文本文件:只读模式,文件不存在报错

read    readable    readline    readlines

扩展:光标的移动seek

②文本文件:只写模式,文件不存在会创建,文件存在则会清空文件内容

write    writeable    writelines

③文本文件:只追加写模式,   'a'     ,文件不存在则创建,存在则在文本最后添加内容

④b模式:bytes模式

#rb
# f=open('aaaa.py','rb')
# print(f.read().decode('utf-8')) # f=open('1.jpg','rb')
# data=f.read() #wb
# f=open('2.jpg','wb')
# f.write(data) # f=open('new_3.txt','wb')
# f.write('aaaaa\n'.encode('utf-8')) #ab
f=open('new_3.txt','ab')
f.write('aaaaa\n'.encode('utf-8'))

6.上下文管理:不用担心文件的close

# with open(r'aaaa.py','r',encoding='utf-8') as read_f,\
# open(r'aaaa_new.py','w',encoding='utf-8') as write_f:
# data=read_f.read()
# write_f.write(data)

7.#循环取文件每一行内容

  with open('a.txt','r',encoding='utf-8') as f:
# while True:
# line=f.readline()
# if not line:break
# print(line,end='') # lines=f.readlines() #只适用于小文件
# print(lines)
for line in f: #推荐使用
         print(line,end='')

8.文件的修改

#方式一:只适用于小文件
# import os
# with open('a.txt','r',encoding='utf-8') as read_f,\
# open('a.txt.swap','w',encoding='utf-8') as write_f:
# data=read_f.read()
# write_f.write(data.replace('alex_SB','alex_BSB'))
#
# os.remove('a.txt')
# os.rename('a.txt.swap','a.txt') #方式二:
import os
with open('a.txt','r',encoding='utf-8') as read_f,\
open('a.txt.swap','w',encoding='utf-8') as write_f:
for line in read_f:
write_f.write(line.replace('alex_BSB','BB_alex_SB')) os.remove('a.txt')
os.rename('a.txt.swap','a.txt')