1. 文件的编码
UTF-8
GBK
GB2312
Big5
GB18030
2. 文件读取
文件操作步骤:
打开文件
读\写文件
关闭文件
open(name,mode,encoding)
name:文件名字符串 “D:/haha.txt”
mode: 只读、写入、追加
r:以只读方式打开
w: 只用于写
a :用于追加
encoding:编码方式
# -*- coding: utf-8 -*-
"""
@Project : 01-python-learn
@File : 01_文件的读取.py
@IDE : PyCharm
@Author : 刘庆东
@Date : 2025/9/11 14:12
"""
import time#打开一个文件
#f=open("D:/测试.txt","r",encoding="GBK")
#print(type(f))#print(f"读取10个字节的内容:{f.read(10)}")
# print(f"读取全部的内容:{f.read()}")#读取的是全部的行
# lines=f.readlines()
# print(type(lines))
# print(f"内容是====:{lines}")#逐行读取
# line1=f.readline()
# print(line1)#使用循环读取# for line in f:
# print(f"每一行是:{line}")
#
# #文件的关闭
# f.close()#使用with语法去打开文件
with open("D:/abc.txt","r",encoding="GBK") as f:for line in f:print(line)time.sleep(1)#单位是秒
3. 文件写入
# -*- coding: utf-8 -*-
"""
@Project : 01-python-learn
@File : 02_文件写入.py
@IDE : PyCharm
@Author : 刘庆东
@Date : 2025/9/11 14:25
"""f = open("D:/abc.txt","w",encoding="GBK")
f.write("Hello World")
f.flush()#清空管道 涮新缓存区
f.close()#关闭文件
print("写入成功了")
4.文件操作综合案例
# -*- coding: utf-8 -*-
"""
@Project : 01-python-learn
@File : 04_注册登录.py
@IDE : PyCharm
@Author : 刘庆东
@Date : 2025/9/11 14:54
"""import os#定义用户的数据文件存储位置
USER_DATA_FILE="D:/userss.txt"#确保我的文件是存在的
def ensure_file_exists():"""确保文件存在,如果不存在就创建它"""if not os.path.exists(USER_DATA_FILE):#没有就创建with open(USER_DATA_FILE,"w",encoding="GBK") as f:passprint(f"用户文件{USER_DATA_FILE}已经创建完毕了")#注册
def register():"""注册新的用户"""print("=========用户注册========")username=input("请输入用户名").strip()#检查用户名名是不是空的if not username:print("用户名不能为空!")return Falsepassword=input("请输入密码").strip()confirm_password=input("请再次输入密码").strip()#检查两次密码是否一致if not password or not confirm_password:print("密码不能为空!")return Falseif password != confirm_password:print("两次密码输入不一致!")return False#用户名如果已经被注册过了你就不能注册了,稍后再写 存数据的格式: liushao:adminif user_exists(username):print("错误:该用户名已经被注册过了,请选择其他的用户名")return False#执行文件的写入try:with open(USER_DATA_FILE,"a",encoding="GBK") as f:f.write(f"{username}:{password}\n")print(f"恭喜你{username}注册成功了")return Trueexcept Exception as e:print(f"写入失败了因为{e}")return False#判断用户名是否被注册过了
def user_exists(username):"""检查用户名是否存在"""try:with open(USER_DATA_FILE,"r",encoding="GBK") as f:for line in f:line=line.strip()if line:#确保不是空行name=line.split(":")[0]#拿到用户名部分if username==name:return Truereturn Falseexcept FileNotFoundError:# 如果文件不存在,说明还没有用户return Falseexcept Exception as e:print(f"检查用户名的时候出现了错误{e}")return False#登录
def login():"""用户登录"""print("=========用户登录========")username = input("请输入用户名:").strip()password = input("请输入密码:").strip()if not username or not password:print("用户名或者密码不能为空")return Falseif validate_userinfo(username,password):print(f"欢迎回来:{username}")return Trueelse:print("用户名或者密码错误!")return Falsedef validate_userinfo(username,password):"""验证用户名或者密码是否正确"""try:with open(USER_DATA_FILE,"r",encoding="GBK") as f:for line in f:line=line.strip()if line:#跳过空行parts=line.split(":",1)#分隔1次if(len(parts)==2):my_username,my_password=parts#反向赋值if my_username==username and my_password==password:return True#print("----------注意看下面的数据:-----------")#print(parts)#没有写完呢 输出看一下 ['liushao', 'admin']#return Truereturn Falseexcept FileNotFoundError:print("未知错误")return Falsedef main():ensure_file_exists()#先判断我们的文件有没有while True:print("*"*36)print("简易的注册登录重点训练文件读取和写入")print("\t\t\t 1.注册")print("\t\t\t 2.登录")print("\t\t\t 3.退出")print("*" * 36)choice=input("请选择[1--3]").strip()if choice=="1":register()elif choice=="2":login()elif choice=="3":print("感谢使用,再见!")breakelse:print("请输入 1 2 3 其中的一个数字")if __name__ == "__main__":main()"""
************************************
简易的注册登录重点训练文件读取和写入1.注册2.登录3.退出
************************************
请选择[1--3]1
=========用户注册========
请输入用户名beijing
请输入密码beijing
请再次输入密码beijing
恭喜你beijing注册成功了
************************************
简易的注册登录重点训练文件读取和写入1.注册2.登录3.退出
************************************
请选择[1--3]2
=========用户登录========
请输入用户名:beijing
请输入密码:beijing
欢迎回来:beijing
************************************
简易的注册登录重点训练文件读取和写入1.注册2.登录3.退出
************************************
请选择[1--3]3
感谢使用,再见!"""