小白学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

小白学python系列————【Day16】文件读写模式及操作方法_第1张图片

(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

小白学python系列————【Day16】文件读写模式及操作方法_第2张图片

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

小白学python系列————【Day16】文件读写模式及操作方法_第3张图片

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 具备填写内容的能力

(二)文件的操作模式

模式 英文字母 分类 作用
文本模式 t rt ;wt ; at 1.只能操作文本文件;2.必须指定encoding参数;3.读写都是以字符串为单位
二进制模式 b rb ;wb ;ab 1.能够操作所有类型的文件 ;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('请你好好输入!!!')

你可能感兴趣的:(python,java,服务器)