Python中如何基于csv让用户注册信息?
- 先实现路径处理,让每个系统都能够找到文件并且运行
- 实现用户注册:让用户选择是否注册,否则break循环,是则通过a的模式打开csv文件让用户输入信息并写到文件中
- 用户登录:判断文件是否存在,当文件存在时才可以继续登陆,通过r的模式打开文件并进行相应的比较
import os
# 路径处理
base_dir = os.path.dirname(os.path.abspath(__file__))
db_file_path = os.path.join(base_dir, "db.csv")
# 用户注册
while True:
choice = input("是否进行用户注册(Y/N)?")
choice = choice.upper()
if choice not in {
'Y', 'N'}:
print("输入格式错误,请重新输入")
if choice == 'N':
break
with open(db_file_path, mode='a', encoding='utf-8') as file_object:
while True:
user = input("请输入用户名(Q/q):")
if user.upper() == 'Q':
break
pwd = input("请输入密码:")
file_object.write('{},{}\n'.format(user, pwd))
# 立即将内存数据刷到硬盘
file_object.flush()
break
# 用户登录
print('欢迎来到xx系统,请登录!')
username = input("请输入用户名:")
password = input("请输入密码:")
# os模块判断文件是否存在
if not os.path.exists(db_file_path):
print("用户文件不存在")
else:
with open(db_file_path, mode='r', encoding='utf=8') as file_object:
for line in file_object:
user, pwd = line.strip().split(',')
if username == user and pwd == password:
print('登陆成功')
else:
print('用户名密码填写错误')
注意:write()方法只是将内容写到了缓冲区
flush() 方法是用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区写入。一般情况下,文件关闭后会自动刷新缓冲区,但有时你需要在关闭前刷新它,这时就可以使用 flush() 方法。