当前位置: 首页 > news >正文

python中的文件操作处理:文本文件的处理、二进制文件的处理

不同文件类型

文本类型:普通字符文件,默认unicode字符集,记事本可打开

文本文件的复制

# 文本文件
source_path = r"C:\Users\maido\Desktop\测试python文件.txt"
destionPath = r"C:\Users\maido\Desktop\copy测试python文件.txt"# 模式:rt-read text; wt-writetext
with open(source_path, mode="rt", encoding="utf-8") as reader:lines = reader.read()with open(destionPath, mode="wt", encoding="utf-8") as writer:writer.write(lines)

执行结果
在这里插入图片描述
且对应路径下出现已经复制好的文件
在这里插入图片描述

二进制文件:jpg、mp3、mp4等

python中最常用的文件管理的方式是通过with来管理上下文的资源关闭情况

非文本文件复制

非文本文件的复制和文本文件的复制最大的区别在于,非文本文件在复制时候是不能够指定文件编码的,例如像文本文件那样指定为utf-8,且复制的模式需要更改,rb - read binary、wb - writer binary。

# 文本文件
source_path = r"C:\Users\maido\Desktop\测试python非文本文件复制.png"
destionPath = r"C:\Users\maido\Desktop\copy测试python非文本文件复制.png"# 模式:rb-read binary; wb-write binary,非文本文件路径不能指定utf-8这种编码
with open(source_path, mode="rb") as reader:lines = reader.read()with open(destionPath, mode="wb") as writer:writer.write(lines)

执行结果
在这里插入图片描述
且在对应路径下出现复制的文件
在这里插入图片描述

综合案例

# 登录日志相关
import timeFileName = 'log.txt'
def record_log(user, status):#先做写的操作,a - append模式,写入数据到日志,直接append,编码问题uft-8with open(FileName, 'a', encoding= 'utf-8') as f:log = f'登录用户:{user},{status},登录时间:{time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())}'f.write(log + '\n')def read_log():with open(FileName, 'rt', encoding= 'utf-8') as f:for line in f.readlines():line = line.strip()print(line)# 接收用户名、密码
user = input("请输入名称")
pwd = input("请输入密码")# 展示界面
def show_menu():menu = '''***********1.当前登录用户2.查看登录日志3.退出系统'''print(menu)#mock数据库
if user in ('a','b','c') and pwd == "666":record_log(user, '登录成功')# 展示界面-保证界面不退出while True:show_menu()choice = input("请输入您的操作码")if choice == '1':print("当前用户:", user)elif choice == '2':read_log()elif choice == '3':record_log(user, "退出系统")print("感谢使用下次见")breakelse:print("请输入有效数字")
else:print('登录失败您的用户名或者密码有错误')record_log(user, '登录失败')

执行结果
在这里插入图片描述

http://www.xdnf.cn/news/1023535.html

相关文章:

  • 心之眼 豪华中文 免安 离线运行版
  • 大模型记忆相关(MemoryOs)
  • kafka Tool (Offset Explorer)使用SASL Plaintext进行身份验证
  • cinematic-gaussians
  • 【RAG+读代码】学术文档解析工具Nougat
  • DeepSeek 引领前端开发变革:AI 助力学习与工作新路径
  • 基于STM32手势识别智能家居系统
  • 抖音AI数字人对口型软件LatentSync最新版整合包,音频驱动口型讲话
  • echarts图封装 自动切换 大屏 swiper 切换里面放echarts图,注意不要开循环 否则出不来
  • 图像处理算法的学习笔记
  • SpringBoot的Web应用开发——Web缓存利器Redis的应用!
  • 【UEFI系列】PEI阶段讲解
  • 生产环境LVM存储降级方案
  • Python训练营---DAY53
  • Git 前后端 Java Vue 项目的 .gitignore 配置分享
  • Linux环境下安装和使用RAPIDS平台的cudf和cuml - pip 安装方法
  • java集合(八) ---- Vector 类
  • 电磁铁性能检测所需工具
  • DataGrip 安装和连接Mysql
  • Eslint、Prettier、.vscode 配置
  • 阳台光伏新风口!安科瑞ADL200N-CT/D16-WF防逆流电表精准护航分布式发电
  • NLP学习路线图(四十三):零样本学习
  • 分布式爬虫系统设计与实现:跨节点MySQL存储方案
  • 导出支付宝账单步骤
  • 3款工具打造递进图:快速入门与个性化定制的实用指南
  • 帆软报表超级链接将查询控件的参数传递到子页面查询控件上
  • 谷歌具身智能VLA大模型 —— Gemini Robotics : 将人工智能带入到物理世界
  • 停产料PC28F128J3F75A存储芯片Micron镁光NOR Flash存储器工业级 电子元器件解析
  • AI LLM大模型逆向环境搭建radare2 + r2mcp + r2ghidra
  • AD左边工程面板消失重新打开