首页 > 其他分享 >文件的操作方法、支持多用户登录注册功能、文件的操作模式

文件的操作方法、支持多用户登录注册功能、文件的操作模式

时间:2023-02-23 15:35:32浏览次数:33  
标签:文件 读取 多用户 操作方法 模式 print 操作 data

目录

一、文件的操作方法

读方法


with open(r'a.txt', 'r', encoding='utf-8') as f:
	# print(f.read())  # 一次性读取文件内所有的数据
	# print(f.read())  # 一次性读取文件内所有的数据
	# print(f.read())  # 一次性读取文件内所有的数据
	# data = f.read()
'''
一次性读取文件所有的数据就会存在漏洞:导致内存溢出
'''
	# print(f.readline())  # 一次读取一行
	# print(f.readline())  # 一次读取一行
	# print(f.readline())  # 一次读取一行
	# print(f.readable())  # True

'''
一次性读取所有的文件内容,并把他们以一行为一个数据值分开,放入列表中,注意末尾的换行符
'''
	# print(f.readlines())  #  ['你好\n', '你好\n', '你好\n']

image

写方法

with open('a.txt', 'w', encoding='utf-8') as f:
    # f.write('hello\n')
    # f.write('hello\n')
    # f.write('hello\n')
"""
用于判断文件是否可以写入
"""
    # print(f.writable()) # True
"""
用于判断文件是否可以读取
"""
    # print(f.readable())  # False
"""
在括号内可以插入一个列表,之后会将列表中的数据值一个个都写入到文本中
"""
    # print(f.writelines(['你好1\n', '你好2\n', '你好3\n']))

image

(1)、文件操作补充

  • 把文件中的所有内容一次性读取出来,括号内可以加入参数控制一次读取多少数据值,但是在不同的操作模式下有不同的读取规律。当文件过大的时候容易出现内存溢出的情况,因此有了以下读取方式:
for line in document:

print(line)

# 通过for循环一行行读取内容,防止出现内存溢出的情况
with open('a.txt', 'w', encoding='utf8') as f:
    f.write('hello')
    f.flush()
# 把内存中得数据立刻刷到硬盘中

二、支持多用户登录注册功能

# 创建一个文件路径
with open(r'a.txt', 'a', encoding='utf8') as f:
    pass
# 循环打印展示给用户选择
while True:
    print("""
    1.注册功能
    2.登录功能
    """)
    # 获取用户输入的编号
    choice_num = input('请输入您想要执行的功能编号>>>:').strip()
    # 判断用户输入的编号(分支结构)
    if choice_num == '1':
        # 获取用户名
        username = input('请输入您的用户名>>>:').strip()
        # 循环读取数据
        with open(r'a.txt', 'r', encoding='utf8') as f2:
            for data in f2:     # jason|123
                list_data = data.split('|')     # ['jason', '123\n']
                # 将用户名与列表作比较
                if list_data[0] == username:
                    print(f'用户名{username}已存在')
                    break
            else:
                # 获取密码
                password = input('请输入您的密码>>>:').strip()
                # 使用尾部追加模式,记得加\n换行
                with open(r'a.txt', 'a', encoding='utf8') as f1:
                    f1.write(f'{username}|{password}\n')
                    print('注册成功')
    elif choice_num == '2':
        #  获取用户名和密码
        username = input('请输入您的用户名>>>:').strip()
        password = input('请输入您的密码>>>:').strip()
        # 循环将数据读出来
        with open(r'a.txt', 'r', encoding='utf8') as f:
            for data in f:      # kevin|321
                list_data = data.split('|')     # ['kevin', '321\n']
                # 将用户名和密码跟列表进行比较,想要去除\n
                if list_data[0] == username and password == list_data[1].strip('\n'):
                    print('登录成功')
                    break
            else:
                print('用户名或密码错误')

三、文件的操作模式

上文中我们讲解的文本的读写模式只是操作模式中的一种,也是默认的操作模式,在输入读写模式的时候只需要简写就可以。这里我们还要介绍通用的操作模式——二进制模式。为了方便理解我们把t模式(文本操作模式)和b模式(二进制操作模式)

t模式 b模式
默认的操作模式 二进制操作模式
三种操作模式的全称是rt、wt、at,当我们使用的时候可以省略t 对应的三种模式是rb、wb、ab,使用的时候需要写全
只能对文本文件进行操作 可以对所有类型的文件进行操作,但是部分类型的文件不能打开
操作的时候可以指定的个数,是字符的个数 操作的时候可以指定操作的个数,这里是字节的个数(一个英文一个字节,一个中文三个字节)
需要在后面指定编码的类型(encoding = 'utf8') 不需要在后面指定编码类型(已经是二进制了)

注意:二进制操作模式下的各种规律是和文本操作模式下一样的

image

标签:文件,读取,多用户,操作方法,模式,print,操作,data
From: https://www.cnblogs.com/oiqwyig/p/17148128.html

相关文章