day11 文件操作模式

# -*- coding: utf-8 -*-
'''
@author:yhh
@time:2023/2/27 13:48
'''

#以t模式为基础进行操作

# 1.r(默认的操作模式):只读模式,当文件不存在时报错,当文件存在时,指针跳到开头位置
# with open('c',mode='rt',encoding='utf-8') as  f:
#     res=f.read()   # 把所有的内容从硬盘读到内存中,当文件过大时,会一下把内存挤爆
#     print(res)
# with open('c', mode='rt', encoding='utf-8') as f:
#     print('第二次读'.center(50,'*'))
#     res1=f.read()
#     print(res1)

# inp_user_name=input('your name:').strip()
# inp_user_pas=input('your password:').strip()
# with open('存到硬盘中的文件密码',mode="rt",encoding='utf-8') as f:
#     res=f.read()
#     user_name,user_pas=res.split(':')
#
#     if inp_user_name==user_name and inp_user_pas==user_pas:
#         print("登陆成功")
#     else:
#         print("登录失败")



# 多个值同时都存在1个文件夹中
# inp_user_name=input('your name:').strip()
# inp_user_pas=input('your password:').strip()
# with open('存到硬盘中的文件密码',mode="rt",encoding='utf-8') as f:
#     for line in f:
#         user_name,user_pas=line.strip().split(':')
#
#         if inp_user_name==user_name and inp_user_pas==user_pas:
#             print("登陆成功")
#             break
#     else:
#         print("登录失败")
# 注意这个处的else是在for同级下的

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

# 2、w:只写模式,当文件不存在时会创建空文件,当文件存在会清空文件,指针位于开始位置

# 这种模式下不写入任何内容
# with open('d.txt',mode='wt',encoding='utf-8') as f:
#     ...


# with open('d',mode='wt',encoding='utf-8') as f:
    # f.read() # 报错,不可读
    # f.write('擦勒\n')

# 强调1:
# 在以w模式打开文件没有关闭的情况下,连续写入,新的内容总是跟在旧的之后
# with open('d.txt',mode='wt',encoding='utf-8') as f:
#     f.write('擦勒1\n')
#     f.write('擦勒2\n')
#     f.write('擦勒3\n')

# 强调2:
# 如果重新以w模式打开文件,则会清空文件内容
# with open('d.txt',mode='wt',encoding='utf-8') as f:
#     f.write('擦勒1\n')
# with open('d.txt',mode='wt',encoding='utf-8') as f:
#     f.write('擦勒2\n')
# with open('d.txt',mode='wt',encoding='utf-8') as f:
#     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()
#     f2.write(res)



# 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 模式与 a 模式的异同:
# 1 相同点:在打开的文件不关闭的情况下,连续的写入,新写的内容总会跟在前写的内容之后
# 2 不同点:以 a 模式重新打开文件,不会清空原文件内容,会将文件指针直接移动到文件末尾,新写的内容永远写在最后


# 案例:a模式用来在原有的文件内存的基础之上写入新的内容,比如记录日志、注册
# 注册功能
# # name=input('your name>>: ')
# # pwd=input('your password>>: ')
# # with open('db.txt',mode='at',encoding='utf-8') as f:
# #     f.write('{}:{}\n'.format(name,pwd))         # 这四行代码是将密码存储在硬盘的文件夹里
# inp_user_name=input('your name:').strip()
# inp_user_pas=input('your password:').strip()
# with open('db.txt',mode="rt",encoding='utf-8') as f:
#     for line in f:
#         user_name,user_pas=line.strip().split(':')
#
#         if inp_user_name==user_name and inp_user_pas==user_pas:
#             print("登陆成功")
#             break
#     else:
#         print("登录失败")             #  将上面的四行代码和之前所写的登录模式结合在一起就能够做成一个注册,再登陆的系统


# 了解:+不能单独使用,必须配合r、w、a。在配合+模式下都是可读可写
# with open('g.txt',mode='rt+',encoding='utf-8') as f:
#     print(f.read())
#     f.write('中国')

# with open('g.txt',mode='w+t',encoding='utf-8') as f:
#     f.write('111\n')
#     f.write('222\n')
#     f.write('333\n')
#     print('====>',f.read())      #这个处的read永远都是从指针后面往后读

#
# with open('g.txt',mode='a+t',encoding='utf-8') as f:
#     print(f.read())
#
#     f.write('444\n')
#     f.write('5555\n')
#     print(f.read())




总结

以t模式为基础的操作:

r模式:只读模式,但要注意,当文件不存在时,会报错,文件存在时,指针回一下跳到开头,一下将所有内容读到硬盘中去

w模式:只写模式,文件不存在时,会创建文件,进行写,当文件存在是,会清空文件的内容,指针跳到开头,进行写

a模式:追加写模式,文件不存在时,创建文件,文件存在时,指针直接跳到内容末尾,在进行写入

了解:+不能单独使用,必须配合r、w、a。在配合+模式下都是可读可写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值