Python文件操作实战案例之用户登录

 更新时间:2022年05月27日 09:04:54   作者:Philosophy7  
以前只是用c语言文件操作打过用户登入,学了几天的python我感觉我又行了,下面这篇文章主要给大家介绍了关于Python文件操作实战案例之用户登录的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

一、前言

在上一小节,我们介绍了文件的基本操作以及数据交换的格式,为了巩固我们上一节文件操作的知识。

在这里我们做一个最基本的案例:用户登录

二、案例:用户登录

许多的应用都涉及数据的存储和使用,作为存储数据的基本形式,文件与应用密不可分。

1.案例分析

用户登录模块可分为管理员和用户登录,若使用该软件或浏览器中,系统就会判断用户是否为首次使用:若是首次使用,则进行初始化,否则进入用户类型选择。若选择管理员登录,则直接登录。如果是用户,那么就给用户提示是否需要注册登录。

根据以上分析,用户管理模块包含以下几个文件

  • 标识位文件flag 用于检测是否初次登录,初识数据为0,首次启动程序为将其中数据修改为1
  • 管理员账户文件u_root。用于保存管理员的账户信息
  • 普通用户账户文件。用于保存普通用户注册的账户。

2.程序设计

  • main()程序的入口
  • c_flag : 标识位文件更改
  • init 信息初始化
  • print_login_menu 打印登录菜单
  • user_select 用户选择
  • root_login 管理员登录
  • user_register 用户注册
  • user_login 普通用户登录

2.1 main()

该函数是程序的入口,这里需要做的就是判断是否是首次使用该系统,保证读取到的为同一个标志位对象,这里将标志位对象的数值存储到文件flag中,每次启动程序时都先调用main函数 该函数应先打开flag文件,从其中读取数据进行判断,根据表示文件的数据来进行执行不同的分支。

def main():
    flag = open("flag")
    word = flag.read()
    if word == "0":
        print("首次登录")
        flag.close()
        c_flag() #标识为1
        init() # 初始化
        print_login_menu() #打印登录菜单
        user_select() # 选择用户
    elif word == "1":
        #不是首次登录
        print("欢迎回来")
        print_login_menu()
        user_select()
    else:
        print("初始化异常...")

2.2 c_flag()

该函数用于修改flag文件中的内容

def c_flag():
    file = open("flag","w")
    file.write("1")
    file.close()

2.3 init()

初次启动系统时,需要创建管理员账户和用户文件

#3.初始化 创建管理员文件和普通用户目录
def init():
    file = open("u_root","w") # 创建并打开管理员账户文件
    root = {"username" : "root","pwd" : "123456"}
    file.write(str(root))
    file.close()
    os.mkdir("users")

2.4 print_login_menu()

该函数用于打印菜单

2.5 user_select()

系统根据用户输入,选择执行不同的流程。

用户输入1 调用root_login函数进行管理员登录等等

def user_select():
    while True:
        user_type_select = input("请输入选择用户类型:")
        if user_type_select == "1":
            root_login()
            break
        elif user_type_select == "2":
            while True:
                select = input("是否需要注册?(y/n)")
                if select == "y" or select == "Y":
                    print("---用户注册---")
                    user_register() # 用户注册
                    break
                elif select == "n" or select == "N":
                    print("用户登录")
                    break
                else:
                    print("输入有误 重新选择")
            user_login() #用户登录    
            break
        elif user_type_select == "0":
            return
        else:
            print("输入有误,请重新选择")

2.6 root_login()

实现管理员登录

def root_login():
    while True:
        print("管理员登录")
        root_user = input("请输入账户:")
        root_pwd = input("请输入密码")
        file_root = open("u_root") #只读的方式打开
        root = eval(file_root.read()) #读取账户信息
        #信息校验
        if root_user == root["username"] and root_pwd == root["pwd"]:
            print("登录成功")
            break
        else:
            print("校验失败")

2.7 user_register()

用户注册函数

def user_register():
    user_id = input("请输入用户名:")
    user_pwd = input("请输入密码")
    user_name = input("请输入昵称")
    user = {"u_id" : user_id,"u_pwd":user_pwd,"u_name":user_name}
    user_path = "./users" + user_id
    file_user = open(user_path,"w") #创建用户文件
    file_user.write(str(user)) #写入
    file_user.close() #保存关闭

2.8 user_login()

实现用户登录函数,校验文件中的数据和输入的数据

def user_login():
    while True:
        print("普通用户登录")
        user_id = input("请输入账户名:")
        user_pwd = input("请输入密码")
        #获取users目录下的所有文件
        user_list = os.listdir("./users")
        #遍历列表 判断user_id是否在列表中
        flag = 0
        for user in user_list:
            if user == user_id:
                flag = 1
                print("登录中....")
                #打开文件
                file_name = "./users" + user_id
                file_user = open(file_name)
                #获取文件内容
                user_info = eval(file_user.read())
                if user_pwd == user_info["u_pwd"]:
                    print("登录成功")
                    break
        if flag == 1:
            break
        elif flag == 0:
            print("没有该用户 请先注册")
            break

到这里用户登录案例就完成了

最后在程序中添加如下代码:

if __name__ == "__main__":
    main()

3.功能演示

在程序目录中创建flag文件,并在其中输入0,保存退出,执行程序

代码汇总

import os
#3.初始化 创建管理员文件和普通用户目录
def init():
    file = open("u_root","w") # 创建并打开管理员账户文件
    root = {"username" : "root","pwd" : "123456"}
    file.write(str(root))
    file.close()
    os.mkdir("users")

#4.打印登录菜单
def print_login_menu():
    print("-----用户选择-----")
    print("-----1.管理员登录-----")
    print("-----2.普通用户登录-----")
    print("-----0.退出-----")
    print("-"*30)
#6.管理员登录
def root_login():
    while True:
        print("管理员登录")
        root_user = input("请输入账户:")
        root_pwd = input("请输入密码")
        file_root = open("u_root") #只读的方式打开
        root = eval(file_root.read()) #读取账户信息
        #信息校验
        if root_user == root["username"] and root_pwd == root["pwd"]:
            print("登录成功")
            break
        else:
            print("校验失败")

#7.普通用户注册 在我们的分析当中 没有提前创建好文件用于保存用户信息 所以需要注册
def user_register():
    user_id = input("请输入账户id:")
    user_pwd = input("请输入密码")
    user_name = input("请输入用户名")
    user = {"u_id" : user_id,"u_pwd":user_pwd,"u_name":user_name}
    user_path = "./users/" + user_id
    file_user = open(user_path,"w") #创建用户文件
    file_user.write(str(user)) #写入
    file_user.close() #保存关闭

#8.用户注册完毕之后 登录用户
def user_login():
    while True:
        print("普通用户登录")
        user_id = input("请输入账户id:")
        user_pwd = input("请输入密码")
        #获取users目录下的所有文件
        user_list = os.listdir("./users")
        #遍历列表 判断user_id是否在列表中
        flag = 0
        for user in user_list:
            if user == user_id:
                flag = 1
                print("登录中....")
                #打开文件
                file_name = "./users/" + user_id
                file_user = open(file_name)
                #获取文件内容
                user_info = eval(file_user.read())
                if user_pwd == user_info["u_pwd"]:
                    print("登录成功")
                    break
        if flag == 1:
            break
        elif flag == 0:
            print("没有该用户 请先注册")
            break


def user_select():
    while True:
        user_type_select = input("请输入选择用户类型:")
        if user_type_select == "1":
            root_login()
            break
        elif user_type_select == "2":
            while True:
                select = input("是否需要注册?(y/n)")
                if select == "y" or select == "Y":
                    print("---用户注册---")
                    user_register()  #用户注册
                    break
                elif select == "n" or select == "N":
                    print("用户登录")
                    break
                else:
                    print("输入有误 重新选择")
            user_login() #用户登录    
            break
        elif user_type_select == "0":
            return
        else:
            print("输入有误,请重新选择")
#2.用于修改flag文件中内容 初次启动系统被调用
def c_flag():
    file = open("flag","w")
    file.write("1")
    file.close()

# 1.#判断是否为首次使用函数
def main():
    flag = open("flag")
    word = flag.read()
    if word == "0":
        print("首次登录")
        flag.close()
        c_flag() #标识为1
        init() # 初始化
        print_login_menu() #打印登录菜单
        user_select() # 选择用户
    elif word == "1":
        #不是首次登录
        print("欢迎回来")
        print_login_menu()
        user_select()
    else:
        print("初始化异常...")

if __name__ == "__main__":
    main()

总结

到此这篇关于Python文件操作实战案例之用户登录的文章就介绍到这了,更多相关Python用户登录内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python+matplotlib演示电偶极子实例代码

    python+matplotlib演示电偶极子实例代码

    这篇文章主要介绍了python+matplotlib演示电偶极子实例代码,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • 用pycharm开发django项目示例代码

    用pycharm开发django项目示例代码

    这篇文章主要介绍了用pycharm开发django项目示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10
  • Python恋爱小助手之必拿下

    Python恋爱小助手之必拿下

    小编有个好兄弟最近在追妹子,跟妹子打得火热!就差临门一脚了,这一jio我帮忙补上去了!他问有没有什么酷炫的表白方式,想要一次成功,表白的方式有许多种今天小编来给大家带来两个不得不同意的表白代码
    2021-10-10
  • Selenium爬取b站主播头像并以昵称命名保存到本地

    Selenium爬取b站主播头像并以昵称命名保存到本地

    这篇文章主要介绍了使用Selenium自动化爬取b站主播头像并以昵称命名保存到本地的方法,代码简单完整,对于大家练习Selenium自动化有一定的帮助,需要的朋友可以参考下
    2021-04-04
  • 跟老齐学Python之做一个小游戏

    跟老齐学Python之做一个小游戏

    经过一段时间学习,看官已经不是纯粹小白了,已经属于python初级者了。现在就是开始做那个游戏的时候了。说是做游戏,不过还是先来点基础知识吧
    2014-09-09
  • Mac中PyCharm配置Anaconda环境的方法

    Mac中PyCharm配置Anaconda环境的方法

    这篇文章主要介绍了Mac中PyCharm配置Anaconda环境的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • Python数据合并的concat函数与merge函数详解

    Python数据合并的concat函数与merge函数详解

    大家都知道concat()函数可以沿着一条轴将多个对象进行堆叠,其使用方式类似数据库中的数据表合并,在使用merge()函数进行合并时,默认会使用重叠的列索引做为合并键,即取行索引重叠的部分,本文给大家介绍python 数据合并concat函数与merge函数,感兴趣的朋友一起看看吧
    2022-05-05
  • 在Python中输入一个以空格为间隔的数组方法

    在Python中输入一个以空格为间隔的数组方法

    今天小编就为大家分享一篇在Python中输入一个以空格为间隔的数组方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • Python运算符&=使用实例探究

    Python运算符&=使用实例探究

    这篇文章主要为大家介绍了Python运算符&=使用实例探究,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • Python3爬虫学习之将爬取的信息保存到本地的方法详解

    Python3爬虫学习之将爬取的信息保存到本地的方法详解

    这篇文章主要介绍了Python3爬虫学习之将爬取的信息保存到本地的方法,结合实例形式详细分析了Python3信息爬取、文件读写、图片存储等相关操作技巧,需要的朋友可以参考下
    2018-12-12

最新评论