day11_04_操作模式详解



#以t为基础进行内存操作

#1、r(默认的操作模式):只读模式,取文件不存在时,报错,文件存在时,文件指针
# 跳到最开始位置
# with open('a.txt',mode='rt',encoding='utf-8') as f:
# print('第一次读'.center(50,'*'))
# res1=f.read()
# print(res1) #读完文件指针跳到最后,从硬盘将整个文件读到内存中
#
# print('第二次读'.center(50, '*'))
# res2 = f.read()
# print(res2) #读不出来了,因为第一次读完文件指针就跳到最后了,已经没有内容了
#
# # ***********************第一次读***********************
# # 哈哈哈
# # ***********************第二次读***********************


# inp_name = input('用户名:').strip()
# inp_pwd = input('密码:').strip()
#
# #验证
# with open('user.txt',mode='rt',encoding='utf-8') as f:
# for line in f:
# print(line,end='') #egon:123\n
# egon:123 这个换行时print自带的换行
# #打印出来不同的行有空行,因为文件中的每一行后面其实有'\n',如果不要这个换行,可以变成print(line,end='')
# lili:456
#
# jack:789
#
# tom:123
# username,password=line.strip().split(':') #.strip()是去掉文件中每一行左右两侧符号
# if inp_name == username and inp_pwd == password:
# print('登录成功!')
# break
# else: #为什么在这儿用else,好好思考,因为文件中的内容需要一行一行比对,
# # 直到全都错以后再执行else
# print('账号或密码错误!')





# l=[
# ['egon','123']
# ['lili','123']
# ]

# inp_name = input('用户名:').strip()
# inp_pwd = input('密码:').strip()
# with open(r'user.txt',mode='rt',encoding='utf-8') as f:
# res=f.read()
# username,password=res.split(':') #得到一个列表,将列表中的内容解压赋值出来
# # print(res,type(res)))
# if inp_name ==username and inp_pwd == password:
# print('登录成功!')
# else:
# print('登录失败!')



#应用程序====》文件
#应用程序====》数据库管理软件=====》文件

#2、w:只写模式:当文件不存在,会创建文件,当文件存在时,(只要一打开就清空)
# 会清空文件,指针位于开始位置
# with open('d.txt',mode='wt',encoding='utf-8') as f:
# # f.read() #不可读
# f.write('哈哈哈1\n') #指针停在第一行最后面
# f.write('哈哈哈2\n') #指针接着上面位置继续写
# f.write('哈哈哈3\n')


#强调1:
#以w模式打开文件没有关闭的情况下,连续写入,新写的内容总是跟在旧内容之后

#强调2:
#如果重新以w模式打开文件,每次写入,新写的内容总是跟把旧内容覆盖,之留下最后写的内容



#3、a:只追加写:再文件不存在时,创建空文档,文件指针再开头
# 当文件存在时,文件指针会直接跳到末尾
# 新写的内容总是跟在旧内容之后
# with open('e.txt',mode='at',encoding='utf-8') as f:
# # f.read() #报错,不能读,因为文件指针调到末尾了
# f.write('擦勒1\n') #打开文件指针跳到最后,,所以写的内容总是在最后
# f.write('擦勒2\n')
# f.write('擦勒3\n')

#案例:w模式用来创建全新的文件
#文件的copy工具

# src_file=input('源文件的绝对路径>>:').strip()
# dst_file=input('目标文件的绝对路径>>:').strip()
# with open(r'{}'.format(src_file),mode='rt',encoding='utf-8') as f1,\
# open(r'{}'.format(dst_file),mode='wt',encoding='utf-8') as f2:
# res=f1.read() #从f1中读出来拷贝进f2
# f2.write(res)

#注意在输入目标文件路径时,除了输入目标文件的路径,还要输入新文件的名称(如:\bbb.txt)



#强调:w模式和a模式的异同:
#1,相同点:在打开文件不关闭的情况下,连续的写入,新写的内容总是跟在旧内容之后
#2、不同点:以a模式重新打开文件夹,不会清空文件夹内容,会将文件指针直接移动到
# 文件末尾,然后新写内容

#a模式通常用来记录账号日志,注册,
#案例:a模式用来基于在原有文件内容的基础之上写入新的内容
#注册功能

#补充实现功能:判断用户使得否存在,输入字符是否合法
# name=input('名称:').strip()
# pwd=input('密码:').strip()
# with open('db.txt',mode='at',encoding='utf-8') as f:
# f.write('{}:{}\n'.format(name,pwd))

#了解:+ 不能单独使用,必须配合r w a
# r+ 特点取决于r,(例如文件不存在直接报错)
with open(r'g.txt',mode='r+t',encoding='utf-8') as f:
pass
上一篇:爬虫案例:中国大学排名(2021.3.28)【解答标签string属性的爬取问题】


下一篇:Fxfactory插件:复古电影调色插件Sheffield Softworks Vintage