文件操作

一听到文件操作大家肯定会第一时间想到with open哈哈哈哈,对的,因为太常用了。那么接下来咱总结一下吧!

with open('python基础.txt','r', encoding='utf-8') as f:
    pass  # 文件操作子代码

open()里面的一些参数讲解:
第一个:需要打开的文件路径
第二个:读写模式(有三种)
第三个:指定编码格式

读写模式

r read 只读模式
w write 只写模式
a append 只追加模式

文件操作模式有两种
文本模式 t
二进制模式 b

文件操作方法

1.read()
一次性读取文件内容 并且光标停留在文件末尾 继续读取则没有内容
并且当文件内容比较多的时候 该方法还可能会造成计算机内存溢出
括号内还可以填写数字 在文本模式下 表示读取几个字符
2.for循环
一行行读取文件内容 避免内存溢出现象的产生
3.readline()
一次只读一行内容
4.readlines()
一次性读取文件内容 会按照行数组织成列表的一个个数据值
5.readable()
判断文件是否具备读数据的能力
6.write()
写入数据
7.writeable()
判断文件是否具备写数据的能力
8.writelines()
接收一个列表 一次性将列表中所有的数据值写入
9.flush()
将内存中文件数据立刻刷到硬盘 等价于ctrl + s

有个登录案例(利用文件操作实现的,可以通过案例再次练习文件操作)

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

while True:
    print("""
        1. register
        2. login
        """)
    choice = input('input choice number>>>:').strip()
    if choice == '1':
        print('Welcome to register')
        # 首先获取用户输入
        username = input('username>>>:').strip()
        password = input('password>>>:').strip()
        # 其次校验用户输入
        with open('userinfo.txt', 'r', encoding='utf-8') as f:
            for line in f:
                real_username, real_password = line.split('|')
                if username == real_username:
                    print('This username exist already')
                    break
            else:
                with open('userinfo.txt', 'w', encoding='utf-8') as f1:
                    f1.write(f'{username}|{password}\n')
                    print(f'Hello {username}, good to see you')
        # 保存到文件中
    elif choice == '2':
        print('Welcome to login')
        # 获取用户输入
        username = input('username>>>:').strip()
        password = input('password>>>:').strip()
        # 校验用户名和密码
        with open('userinfo.txt', 'r', encoding='utf-8') as f2:
            for line in f2:
                real_username, real_password = line.split('|')
                if username == real_username and password == real_password.strip('\n'):
                    print(f'Welcome {username}')
    else:
        print('wrong number')

posted @ 2023-03-28 12:10  阿丽米热  阅读(28)  评论(0编辑  收藏  举报
Title