小白学python系列————【Day16】文件读写模式及操作方法

今日内容概要

  • 文件的读写模式

  • 文件的操作模式

  • 文件操作的诸多方法

(一)文件的读写模式

1.只读模式

简称字母r,全称为rt。
使用该模式打开的文件只能读取内容!!!
使用该模式打开的文件不能做读的操作!!!

敲重点:
(1.)当文件路径不存在,r模式会直接报错处理

with open(r'c.txt','r',encoding='utf8')as f:
   pass
   

D:\Python36\python36.exe "E:/pythonProject/Day10/02 预习.py"
Traceback (most recent call last):
 File "E:/pythonProject/Day10/02 预习.py", line 55, in <module>
   with open(r'c.txt','r',encoding='utf8')as f:
FileNotFoundError: [Errno 2] No such file or directory: 'c.txt'

Process finished with exit code 1

(2.)当文件路径存在时,r模式会打开文件等待读取内容

with open(r'a.txt', 'r', encoding='utf8') as f:
   print(f.read())
   


D:\Python36\python36.exe "E:/pythonProject/Day10/02 预习.py"
好好学习不要蒙圈 好好听课
不要蒙圈 好好听课
不要蒙圈 好好听课


Process finished with exit code 0

2.只写模式

简称字母w,全称为wt。
使用该模式打开的文件只能写内容!!!
使用该模式打开的文件不能做写的操作!!!

敲重点:
(1.)当文件路径不存在,w模式会自动创建该文件

with open(r'c.txt','w',encoding='utf8')as f:
   pass
   

D:\Python36\python36.exe "E:/pythonProject/Day10/02 预习.py"

Process finished with exit code 0

请添加图片描述

(2.)当文件路径存在时,w模式会先清空该文件内容 之后等待填写新内容

with open(r'a.txt', 'w', encoding='utf8') as f:
   # pass
  print(f.write('好好学习,天天向上'))    
   


D:\Python36\python36.exe "E:/pythonProject/Day10/02 预习.py"
9

Process finished with exit code 0

请添加图片描述

3.只追加模式

简称字母a,全称为at。
使用该模式打开的文件默认是在末尾追加新的内容!!!
使用该模式打开的文件不能做读的操作!!!

敲重点:
(1.)当文件路径不存在,w模式会自动创建该文件

with open(r'c.txt','a',encoding='utf8')as f:
   pass
   

D:\Python36\python36.exe "E:/pythonProject/Day10/02 预习.py"

Process finished with exit code 0

(2.)当文件路径存在时,a模式不会先清空该文件内容 只在在文件末尾等待填写新内容

with open(r'a.txt', 'a', encoding='utf8') as f:
     f.write('不要蒙圈 好好听课\n')
   


D:\Python36\python36.exe "E:/pythonProject/Day10/02 预习.py"

Process finished with exit code 0

请添加图片描述

4.补充知识点

1.with语法支持一次性打开多个文件!!!

with open(r'a.txt', 'r', encoding='utf8') as f1, open(r'b.txt', 'r', encoding='utf8') as f2, open() as f3, open() as f4...:

2.对于补全python语法,不做任何操作,有两种方法:
方法一:with语法结束后pass结束;
方法二:直接加…(不推荐使用!!!)

3.通常情况下英语单词的结尾如果更上了able表示具备该单词描述的能力
eg:
readable 具备读取内容的能力
writable 具备填写内容的能力

(二)文件的操作模式

模式英文字母分类作用
文本模式trt ;wt ; at1.只能操作文本文件;2.必须指定encoding参数;3.读写都是以字符串为单位
二进制模式brb ;wb ;ab1.能够操作所有类型的文件 ;2.不需要指定encoding参数;3.读写都是以bytes为单位

(三)文件的诸多操作方法

1.单独列出,敲重点:
read():一次性读取文件内容并且光标会停留在文件末尾,继续读则为空。
当文件数据很大时一般不采用一次性读取。
代码展示:

for line in f:
    print(line)          # 文件对象支持for循环,并且依次只读一行  

2.其余由列表展示:

文件操作方法作用
readline()一次只读一行内容
readlines()按照行的方式读取所有的内容并组织成列表返回
readable()判断当前文件是否可读
writable()判断当前文件是否可写
write()填写文件内容
writelines()支持填写容器类型(内部可以存放多个数据值的数据类型)多个数据值
flush()将内存中的文件数据立刻刷到硬盘(主动按ctrl+s)

作业展示

作业一:

1.编写简易版本的拷贝工具
自己输入想要拷贝的数据路径 自己输入拷贝到哪个地方的目标路径
任何类型数据皆可拷贝
ps:个别电脑C盘文件由于权限问题可能无法拷贝 换其他盘尝试即可

# 作业一:
url = input('请输入您的文件路径>>>:').strip()
ture_url = input('请输入您想要拷贝的数据路径>>>:').strip()
with open(fr'{url}','rb')as read_f,open(fr'{ture_url}','wb') as write_f:
    write_f.write(read_f.read())
print('拷贝成功')

作业二:(存在错误,只写了大概,晚上继续修改完善)

2.利用文件充当数据库编写用户登录、注册功能
文件名称:userinfo.txt
基础要求:
用户注册功能>>>:文件内添加用户数据(用户名、密码等)
用户登录功能>>>:读取文件内用户数据做校验
ps:上述功能只需要实现一次就算过关(单用户) 文件内始终就一个用户信息
拔高要求:
用户可以连续注册
用户可以多账号切换登录(多用户) 文件内有多个用户信息
ps:思考多用户数据情况下如何组织文件内数据结构较为简单
提示:本质其实就是昨天作业的第二道题 只不过数据库由数据类型变成文件

# 作业二:
with open(r'b.txt', 'a', encoding='utf') as f3:
    while True:
        print("""
            1.注册用户信息
            2.登录用户
            3.退出程序
            """)
        order = input('请输入您的指令>>>:').strip()
        if order == '1':
            while True:
                username = input('please input your username>>>:').strip()
                password = input('please input your password>>>:').strip()
                user = '|'.join((username, password))
                with open(r'b.txt', 'r',encoding='utf')as f1:
                    ft = f1.read()
                if user in ft:
                    print('用户名已存在')
                    continue
                else:
                    with open(r'b.txt', 'a', encoding='utf') as f3:
                        f3.write(f'{user}\n')
                        print(f'{username}注册成功!!!')
                        break
            continue
        elif order == '2':
            while True:
                username = input('please input your username>>>:').strip()
                password = input('please input your password>>>:').strip()
                user = '|'.join((username, password))
                with open(r'b.txt', 'r',encoding='utf')as fe:
                    ft = fe.read()
                if user in ft:
                    print('登录成功')
                    break
                else:
                    print('用户名或密码错误')
                    continue
        elif order == '3':
            print('退出成功')
            break
        else:
            print('请你好好输入!!!')

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值