目录
一、文件的操作方法
读方法
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']
写方法
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']))
(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') | 不需要在后面指定编码类型(已经是二进制了) |
注意:二进制操作模式下的各种规律是和文本操作模式下一样的
标签:文件,读取,多用户,操作方法,模式,print,操作,data From: https://www.cnblogs.com/oiqwyig/p/17148128.html