当前位置: 首页 > 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, '登录失败')

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

相关文章:

  • Android音视频多媒体开源框架基础大全
  • 基于Docker实现frp之snowdreamtech/frps
  • window显示驱动开发—为 DirectX VA 2.0 扩展模式提供功能(一)
  • 【JVM】- 类加载与字节码结构1
  • Spring AI详细使用教程:从入门到精通
  • RabbitMQ缓存详解:由来、发展、核心场景与实战应用
  • ubuntu之坑(十四)——安装FFmpeg进行本地视频推流(在海思平台上运行)
  • 软件工程的实践
  • ffmpeg subtitles 字幕不换行的问题解决方案
  • Yarn与NPM缓存存储目录迁移
  • MySQL查询缓存深度剖析
  • ffmpeg rtmp推流源码分析
  • 3GPP协议PDF下载
  • 【信创-k8s】重磅-鲲鹏arm+麒麟V10离线部署k8s1.30+kubesphere4.1.3
  • 从SQL Server到分布式大数据平台:重构企业数据架构
  • 四数之和-力扣
  • Python让自动驾驶“看见未来”:环境建模那些事儿
  • GaussDB 分布式数据库调优(架构到全链路优化)
  • 前端项目Excel数据导出同时出现中英文表头错乱情况解决方案。
  • 用Java实现常见排序算法详解
  • 南京建设机械网站/如何自己做一个网页
  • 丽水网站建设/国内最新十大新闻
  • 杭州做网站要多少钱/1688如何搜索关键词排名
  • 汽车配件网站建设/网站推广系统方案
  • 那些网站可以做海报/东莞seo收费
  • 一站式服务大厅/软件外包网