ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

学习python-Day11

2022-06-29 23:34:15  阅读:173  来源: 互联网

标签:文件 读取 encoding python 模式 学习 Day11 txt open


今日内容

一,文件读写模式

补充知识:
	1.with语法支持一次性打开多个文件
		with open(r'a.txt', 'r', encoding = 'utf8') as f1, open(r'b.txt', 'r', encoding='utf8') as f2,...:
	2.pass:补全python语法,但不执行任何操作。
		... 也是,但不推荐使用。
	3.通常情况下英语单词如果加上able表示具有该单词描述能力
		readable:具有读取内容的能力。
		writable:具有填写内容的能力
r	使用该模式的文件打开只能读取内容,不能做其他操作(写)
	1.文件路径不存在时,r模式会报错。
	2.文件路径存在时,人模式会打开文件等待读取文件内容。
w	使用该模式打开的文件只能写内容,不能做其他操作(读)
	1.文件路径不存在时,w模式会自动在该路径下重新创建一个新的文件。
	2.文件路径存在时,w模式会先清空该文件内容,之后等待填写新内容。
a	使用该模式代开文件时默认会在文件末尾处追加新的内容,不能做读操作。
	1.文件路径不存在时,a模式会自动在当前路径创建一个新的文件。
	2.文件路径存在时,a模式不会清空文件内容,只在文件末尾处等待填写新内容。追加的内容直到最大容量及停止追加。

二,文件的操作模式

t	一种文本模式。
	文件操作默认模式
		r---->rt
		w---->wt
		a---->at
	使用条件:
			1.只能操作文本文件
			2.必须加上指定encoding参数。
			3.读写都是以字符串为单位。
b	二进制模式
	模式:
			rb,wb,ab (b不能省略)
	使用条件:
			
			1.能够操作所有类型的文件
			2.不需要指定encoding参数。
			3.读写都是以bytes为单位。

三,文件的操作方法

1.read()	一次性读取文件内容并且光标会停留在文件末尾,继续读则结果为空。
	注意:当文件数据过大时,不推荐一次性读取。但是用for循环可以解决这个问题。
	for line in f:
        print(line)  
	文件对象支持for循环一次只读一行
2.readline()	一次只读一行内容
3.readlines()	按照行的方式读取所有的内容并组织成列表返回,可以读取多行数据。
4.readable()	判断当前文件是否可读,返回为布尔值。
5.writable()	判断当前文件是否可写
6.write()	填写文件内容。
7.writelines()	支持填写容器类型(内部可以存放多个数据值的数据类型)
			元组,列表,字典,集合
8.flush()	将内容中的文件数据立刻刷到硬盘(ctrl+s)

作业

1.编写简易版本的拷贝工具
自己输入想要拷贝的数据路径
自己输入拷贝到哪个地方的目标路径
任何类型数据皆可拷贝
ps: 个别电脑C盘文件由于权限问题可能无法拷贝
换其他盘尝试即可

with open(r'D:\pythonProject\day02\a1.txt', 'r', encoding='utf8') as f1, open(r'D:\pythonProject\day02\a.txt', 'w', encoding='utf8') as f2:
    f2.write(f1.read())

with open(r'D:\pythonProject\day02\a1.txt', 'rb') as f1, open(r'D:\pythonProject\day02\a.txt', 'wb') as f2:
    f2.write(f1.read())

2.利用文件充当数据库编写用户登录、注册功能
文件名称: userinfo.txt
基础要求:
用户注册功能 >> >: 文件内添加用户数据(用户名、密码等)
用户登录功能 >> >: 读取文件内用户数据做校验
ps: 上述功能只需要实现一次就算过关(单用户)
文件内始终就一个用户信息
拔高要求:
用户可以连续注册
用户可以多账号切换登录(多用户)
文件内有多个用户信息
ps: 思考多用户数据情况下如何组织文件内数据结构较为简单
提示: 本质其实就是昨天作业的第二道题
只不过数据库由数据类型变成文件

while True:
    print('''
    ---------------------
           l:用户登录
           r:用户注册
    ---------------------
    ''')
    order = input('请输入功能:')
    if order == 'l':
        # 输入用户名和密码
        username = input('请输入你的用户名>>>:').strip()
        password = input('请输入你的密码>>>:').strip()

        # 打开文件,读取文件每一个数据
        with open(r'userinfo.txt', 'r', encoding='utf') as f2:
            for i in f2:
                # 每次循环都去除里面的换行符
                date = i.strip('\n')
                # 将|去掉,数据是以列表的形式写入文件中
                date1 = date.split('|')
                # 判断用户名和密码是否正确,用索引的形式。
                if username == date1[0]:
                    if password == date1[1]:
                        print(f'{date1[0]},你已成功登录!!!')
                        break
                    else:
                        print('你的密码错误!!!')
                        continue
            else:
                print('登录失败!!')
                continue

    if order == 'r':
        username = input('请输入你的用户名>>>:').strip()
        password = input('请输入你的密码>>>:').strip()
        # 用|将两个变量分隔,方便写入文件中
        date = username + '|' + password
        # 注册--初始化输入用户和密码,将信息写入文件中。
        with open(r'userinfo.txt', 'a', encoding='utf') as f1:
            with open(r'userinfo.txt', 'r', encoding='utf8') as f3:
                #循环f3列表
                for old in f3:
                    #如果数据等于这个数据则用户名会报错
                    if date == old.strip('\n'):
                        print('用户名重复!!')
                        break
                else:
                    date = date + '\n'
                    f1.write(date)
                    print('注册成功!!')

image

标签:文件,读取,encoding,python,模式,学习,Day11,txt,open
来源: https://www.cnblogs.com/bjyxxc/p/16423214.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有