#1、有一个文件
#2、打开文件
#3、操作文件 读、写
#4、关闭
#只读、写模式、追加模式,默认的是只读默认
#'r' 读模式
# 'w' 写模式---如果之前有内容会删除
# 'a' 追加模式
# 'b' 二进制模式(可添加到其他模式中使用)
# '+' 读或者写模式(可添加到其他模式中使用)
# r只读,r+读写,不创建
# w新建只写,w+新建读写,二者都会将文件内容清零(以w方式打开,不能读出。w+可读写)
# r+:可读可写,若文件不存在,报错;w+: 可读可写,若文件不存在,创建
#以a,a+的方式打开文件,附加方式打开(a:附加写方式打开,不可读;a+: 附加读写方式打开)
S = 'a+'
f = open(r'D:\users.txt', 'a+')#使用r就不用转译符了,用系统自带的绝对路径了 或者使用D:\/进行转译
f.seek(0)#移动文件指针,0代表从文件开头开始算起
print(f.read())#获取文件里的所有内容
f.write('yangfan1,12345\n')#写入内容
f.close()#关闭文件,是为了释放资源,如果不close(),那就要等到垃圾回收时,自动释放资源。垃圾回收的时机是不确定的,也无法控制的
文件修改:
#-----文件修改---------
#第一种方法,直接修改然后删除并写入
f=open(r'D:\users.txt',encoding='utf-8')
s=f.read().replace('哈哈','呵呵')
f.close()
f=open(r'D:\users.txt','w',encoding='utf-8')
f.write(s)
f.flush()#不等缓冲区是否满了,立即把缓冲区内容写入磁盘。
f.close()
#文件修改
f = open(r'D:\users.txt','a+',encoding='utf-8')
f.seek(0)
s = f.read().replace('呵呵', '哈哈')#修改文件内容,把呵呵修改为哈哈
f.seek(0)#需要加这个指针,不然在末尾追加会出现重复数据
f.truncate()#清空文件的内容
f.write(s)
f.close()
#文件修改,第三种方法,当修改文件本身内容比较多时,使用这种方式。
# 先修改一个文件并新建一个文件,然后删除原有文件,并将新文件命名为原有文件的名字
import os
with open(r'D:\users.txt',encoding='utf-8') as f,open(r'D:\users12.txt','w',encoding='utf-8')as f2: #打开多个文件用,号隔开,with as自动判断什么时候关闭文件,不用每次都写.close()
for a in f:
new_a=a.replace('嘎嘎','nini')
f2.write(new_a)
os.remove('D:\users.txt')#删除users12.txt文件
os.rename('D:\users12.txt','D:\users.txt')#修改文件名,将users12.txt修改为users.txt
高效处理文件:
#高效处理文件:直接循环文件里的对象,叫做文件句柄
f= open(r'D:\users.txt')
for line in f :
print(line)