2020-10-15-包和文件操作及作业

本文介绍了Python中的包使用,包括如何创建和导入包,以及定制_init_文件。同时,详细阐述了文件操作,特别是数据持久化的概念和实现方法,如通过普通文件保存数据。在实践中,通过一个登录注册的例子展示了如何利用文件实现数据持久化,确保已注册账号不能重复注册,并验证登录时的密码准确性。
摘要由CSDN通过智能技术生成
day13-包和文件操作及作业
包的使用
  1. 什么是包

    包含_________init_____.py文件的文件夹就是包

    包用来对py文件(模块)进行分类或者封装

  2. 怎么使用包中的模块

    • import 包名.模块名
    • import 包名.模块名 as 新名
    • from 包名 import 模块名
    • from 包名.模块名 import 变量
    导入包中的模块
  3. 定制包的_init__ .py文件

    • 不管用什么方式导入包或者包中的模块,系统都会去执行_init_文件
文件操作
  1. 数据持久化

    计算机存储数据持久化
    程序中的数据默认情况下都是保存在运行内存中,保存运行内存中的数据在程序结束之后会自动销毁; 保存在磁盘中的数据,除非手动删除或者磁盘损坏,否则数据会一直存在将程序中的数据通过文件保存在磁盘中,这个过程就是数据持久化的过程;持久化的工具:普通文件(.txt)数据库(.sqlite)json文件等
  2. 文件操作

    操作文件的基本步骤:打开文件 -> 读/写文件 -> 关闭文件

  3. python实现文件操作

    """
    open(file,mode='r'...encoding=None)以指定的方式打开指定的文件并且返回(返回的是文件对象)
    
    filie  - 字符串,需要打开的文件路径
    		 路径:
    		 绝对路径:文件在计算机中全路径
    		 相对路径:用 . 来代替文件全路径的部分,只写部分路径
    		 			. - 表示当前目录(当前代码文件所在的目录)可以省略
    		 			.. - 表示当前目录的上层目录
    
    mode  - 字符串,打开的方式(决定打开文件文件能支持的操作;决定读写数据的类型)
    		‘r’ - 表示只读(默认)
    		‘w’ - 表示只写,打开的时候会清空文件
    		‘a’ - 表示只写,打开的时候会保留原文件内容
    		
    		‘t’ - 表示文本数据(对应str类型)(默认)
    		‘b’ - 表示二进制数据,对应bytes类型
    		注意:1.以读的形式打开一个不存在的文件会报错
    			   以写的形式打开一个不存在的文件不会报错,并且会自动创建
    			 2.如果是文本文件打开的时候可以是b,也可以是 t
    			   如果是非文本文件打开的时候只能带 b
    encoding   - 设置文本的编码方式,一般使用‘utf-8’
    			注意:创建文件和打开文件 读 写对饮搞得编码方式要一致
    				  打开的时候如果带 b,不能设置encoding 
    """
    """
    1.读
    文件对象.read()  - 从读写位置开始读到文件结尾(适用于所有文件)
    文件对象.readline()  - 从读写位置开始读到一行结尾(只能用于以 t 打开的文本文件)
    
    2.写
    文件对象.write(数据)   - 将指定的数据写入文件中(从读写位置开始写)
    
    文件对象.seek(0)  - 将读写位置移动到文件开头(读的方式打开读写默认在文件开头,写的方式打开读写默认在文件结尾)
    """
    
数据持久化
  1. 怎么做到数据的持久化

    """
    1.创建一个文件用来保存需要持久化的数据
    2.需要这个数据的时候从文件中获取数据
    3.如果在程序中对这个数据进行了修改,需要将最新的数据更新到文件中
    """
    

作业:也一个登陆注册的页面,要求已经注册过的账号不能再注册:已经注册的账号才能登陆,并且登陆的密码必须和注册的密码一致

路径

path1 = r'.\files\add_students.txt'

def func():
    print('===============================')
    print('❤1.登录:'.center(25))
    print('❤2.注册:'.center(25))
    print('❤3.退出:'.center(25))
    print('===============================')
    num = input('请选择:')
    return num

while True:
    num = func()
    if num == '2':
        name = input('请输入用户名:')
        password = input('请输入用户名密码:')

        f = open(path1)
        result = f.read()
        add_stu = eval(result)
        if name in add_stu:
            print('用户名已存在,请重新输入:')
            continue
        add_stu[name] = password

        f = open(path1, 'w')
        f.write(str(add_stu))
        print('注册成功!')
    elif num == '1':
        name = input('请输入登录名:')
        password = input('请输入登录密码:')
        f = open(path1)
        result = f.read()
        add_stu = eval(result)
        if name not in add_stu or password != add_stu[name]:
            print('密码或者登录名错误!请重新选择:')
            continue
        print('登录成功!')
    elif num == '3':
        exit()
    else:
        print('选择错误,重新选择:')
        continue
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值