66-python中的文件操作

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
感谢使用,再见!"""

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/922068.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/922068.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FPGA实例源代码集锦:27个实战项目

本文还有配套的精品资源,点击获取 简介:FPGA是一种可编程逻辑器件,允许用户根据需求配置硬件功能。本压缩包提供27个不同的FPGA应用实例源代码,旨在帮助初学者深入学习FPGA设计,并为专业工程师提供灵感。内容涵盖了…

基于 Vue+Mapbox 的智慧矿山可视化功能的技术拆解

01、项目背景 在全球矿业加速向 “高端化、智能化、绿色化” 转型的浪潮下,传统矿业面临的深地开采难题、效率瓶颈与安全隐患日益凸显。 在矿业转型的迫切需求与政策、技术支撑的背景下依托 GIS 技术,开展了 “中国智矿” GIS 开发项目,旨在…

进程状态(Linux)

进程状态Linux进程状态Linux进程状态进程描述R运行状态S睡眠状态D磁盘休眠状态T停止状态t被追踪状态(调试状态)X死亡状态Z僵死状态其实大致也就可以分为三种运行,阻塞,挂起。运行状态每个cpu里都有一个运行队列,进程在运行队列里,…

物联网领域中PHP框架的最佳选择有哪些?

物联网(IoT)作为近年来快速发展的技术领域,已经渗透到智能家居、工业自动化、智慧城市等方方面面。作为Web开发中广泛使用的语言,PHP凭借其易学易用、开发效率高和生态丰富的特点,也在物联网领域找到了用武之地。 本文…

java反射(详细教程)

我们平常创建类的实例并调用类中成员需要建立在一个前提下,就是已经知道类名和类中成员的信息,灵活性大大降低。甚至在一些项目中还需要修改源码来满足使用条件,大大降低了操作的灵活性。Java 反射(Reflection)是 Java…

消息队列-初识kafka

优缺点 消息队列的优点: 实现系统解耦: :::color5 系统解耦解释 有 MQ 时是 “服务 A 发消息到队列,其他服务从队列拿消息,新增服务接队列就行”;无 MQ 时是 “服务 A 直接调其他服务的接口 / 依赖,新增 / …

实践《数字图像处理》之Canny边缘检测、霍夫变换与主动二值化处理在短线段清除应用中的实践

在最近的图像处理项目中,其中一个环节:图片中大量短线(不是噪声),需要在下一步处理前进行清除。在确定具体实现时,碰到了Canny边缘检测、霍夫变换与主动二值化处理的辩证使用,相关逻辑从图片灰度…

vue3与ue5通信-工具类

工具 ue5-simple.js /*** UE5 通信工具* 两个核心方法:发送消息和接收消息*/// 确保全局对象存在 if (typeof window ! undefined) {window.ue window.ue || {};window.ue.interface window.ue.interface || {}; }/*** 生成 UUID*/ function generateUUID() {retu…

在kotlin中如何使用像java中的static

在 Kotlin 中,没有直接的 static 关键字,但有几种等效的方式来实现 Java 中静态成员的功能: 1. 伴生对象 (Companion Object) - 最常用 class MyClass {companion object {// 静态常量const val STATIC_CONSTANT "constant value"…

如何在 Spring Boot 中指定不同的配置文件?

介绍 Spring Boot 提供了多种方式来管理和加载配置文件,特别是在多环境配置下,比如开发、测试和生产环境。通过指定不同的配置文件,可以灵活地调整应用程序的行为,以适应不同的需求。本文将介绍在 Spring Boot 中如何指定使用不同…

在centOS源码编译方式安装MySQL5.7

一、前言 在生产环境中部署数据库时,很多人会选择直接使用 yum/apt 包管理器 安装 MySQL,这样简单快速,但缺点是版本受限,灵活性不足。对于需要指定版本、启用特定编译参数或优化的场景,源码编译安装 MySQL 就显得非常…

探讨Hyperband 等主要机器学习调优方法的机制和权衡

本篇文章Master Hyperband — An Efficient Hyperparameter Tuning Method in Machine Learning深入探讨了Hyperband这一高效的超参数调优方法。文章的技术亮点在于其结合了多臂老虎机策略和逐次减半算法,能够在大搜索空间中快速剔除表现不佳的配置,从而…

Mysql:InnoDB 关键特性

目录 一、插入缓冲(Change Buffer)→ 快递驿站的 “临时存放区” 二、两次写(Double Write)→ 重要文件的 “备份存档” 三、自适应哈希索引(AHI)→ 图书馆的 “热门书快捷查找区” 四、异步 IO&#x…

STM32-----SPI

SPI简介SCK:和I2C中SCL的时钟线一个作用,都是在高电平拿出数据,在低电平写数据MOSI:主机输出从机输入MISO:主机输入从机输出,只有当对应从机的SS为低电平,从机的MISO引脚才能设置推挽输出,当从机SS为高电平时&#xff…

华为考试:HCIE数通考试难度分析

随着信息技术的飞速发展,网络技术已成为支撑各行各业运转的重要基础,市场对高水平网络技术人才的需求持续增长。HCIE作为华为认证体系中的最高级别认证,代表了网络技术领域的专业顶尖水平。本文将对HCIE数通认证的考试内容、难度及备考策略进…

一些常用的激活函数及绘图

深度网络的一些常用激活函数,并通过matplot绘制出来: import matplotlib.pyplot as plt import numpy as npdef relu(x):return np.maximum(0, x)def leaky_relu(x, alpha0.01):return np.where(x > 0, x, alpha * x)def gelu(x):return 0.5 * x * (1…

AE苹果手机iPhone 17展示动画片头模板 App Promo Phone 17 Pro

专为 App 发布会、电商促销、新品宣传 打造的 iPhone 17 Pro 动画展示 AE 模板。 4K 超清分辨率 26 张可替换照片位,无需第三方插件,拖拽即可输出专业级手机宣传片。 核心亮点 4K 超清:38402160 分辨率,大屏投放与社媒高清压缩无…

基于Python的云原生TodoList Demo 项目,验证云原生核心特性

以下是一个基于 Python 的云原生 TodoList Demo 项目,涵盖 容器化、Kubernetes 编排、CI/CD、可观测性、弹性扩缩容 等核心云原生特性,代码简洁且附详细操作指南,适合入门学习。项目概览 目标:实现一个支持增删改查(CR…

go 日志的分装和使用 Zap + lumberjack

自带的log无法满足 按大小轮转 ,按天数清理旧日志 ,自动压缩 ,限制备份数量 ,防止磁盘写满 ,生产环境推荐 等 使用 Zap lumberjack package mainimport ("go.uber.org/zap""go.uber.org/zap/zapcore&q…

【.Net技术栈梳理】01-核心框架与运行时(CLR)

文章目录1 .NET Runtime(CLR-公共语言运行时)1.1 中间语言 IL1.1.1 从源代码到通用中间语言(IL)1.1.2 运行时加载:CLR登场1.1.3 核心步骤:即时编译 (JIT Compilation)1.1.4 执行与内存管理(GC&a…