python 文件操作+例题

内容概要

  • 文件操作的相关方法
  • 文件操作模式
  • 文件操作代码练习题
  • 文件内光标的移动及文件修改

内容详细

文件操作方法

# 文件操作方法 # 读系列 with open(r'a.txt', 'r', encoding='utf8') as f: # print(f.read()) # 一次性读取文件内所以的内容 # print(f.readline()) # 每次都读文件一行内容 # print(f.readlines()) # 读取文件所有内容 组织成列表 每个元素是文件的每行内容 # print(f.readable()) # 判断当前文件是否具备读的能力 # 写系列 with open(r'a.txt', 'w', encoding='utf8') as f: # f.write('奥利给!') # 往文件内写入文本内容 # f.write(123) # 写入的内容必须是字符串类型 # f.write(['zhang', 'zhao', 'yang']) # 可以将列表中多个字符串元素全部写入 # print(f.writable()) # True # print(f.readable()) # False # f.flush() # 直接将内存内数据刷到硬盘 相当于Ctrl+s

文件优化操作

with open(r'a.txt', 'r', encoding='utf8') as f: print(f.read()) # 一次性读取文件内的所有内容 print(f.read()) # 一次性读取文件内的所有内容 print(f.read()) # 一次性读取文件内的所有内容 ''' 1.一次性读完以后 光标停在了文件末尾 无法再次读取内容 2.该方法在读取大文件的时候 可能会造成内存溢出的情况 解决上述问题的方法就是逐行读取文件内容 ''' # for line in f: # 文件变量名f支持for循环 相当于一行行读取文件内容 ''' 以后涉及到多行文件内容的情况一般都是采用for循环读取 '''

例题讲解

简易版本的注册、登陆功能

​ 普通要求(实现一次即可)

​ 1.注册功能
​ 获取用户名和密码组织成你喜欢的样子写入文件即可

​ 2.登陆功能
​ 密码然后比对是否与文件内用户数据一致

进阶版:

多用户注册

# 多用户注册 while True: # 1.获取用户用户名和密码 username = input('username>>>:').strip() password = input('password>>>:').strip() # 2.将用户名和密码组织成一个字符串 data = '%s|%s\n' % (username, password) # 2.1.判断用户名是否已存在 with open(r'userinfo.txt', 'r', encoding='utf8') as f1: # 2.2.循环读取每一行用户数据 for line in f1: # 2.3.获取每一行数据中的用户名 real_name, real_pwd = line.split('|') # 2.4.判断用户名是否一致 if username == real_name: print('用户名已存在') break else: # 3.文件操作 写入数据 with open(r'userinfo.txt', 'a', encoding='utf8') as f: f.write(data) print('用户:%s 注册成功' % username)

多用户登录

代码整合:两者合一

# 多用户注册和登录 while True: print(''' 1.用户注册 2.用户登录 3.退出系统 ''') choice = input('请输入您想执行的功能编号>>>:').strip() if choice == '1': # 获取用户名和密码 username = input('请输入您的用户名>>>:').strip() password = input('请输入您的密码>>>:').strip() # 将用户名和密码组织成一个字符串 data = '%s|%s\n' % (username, password) # 判断用户名是否已存在 with open(r'a.txt', 'r', encoding='utf8') as f1: # 循环读取每一行用户数据 for line in f1: # 获取每一行数据的用户名 real_name, leal_pwd = line.split('|') # 判断用户名是否一致 if username == real_name: print('用户已存在') break else: # 文件操作 写入数据 with open(r'a.txt', 'a', encoding='utf8') as f: f.write(data) print('用户:%s 注册成功' % username) elif choice == '2': # 获取用户名和密码 username = input('请输入您的用户名>>>:').strip() password = input('请输入您的密码>>>:').strip() # 获取文件内真实的用户数据 with open(r'a.txt', 'r', encoding='utf8') as f: for line in f: # 切割字符串获取真实的用户名和密码 注意密码末尾有换行符\n real_name, real_pwd = line.split('|') # 对比用户名和密码是否正确 if username == real_name and password == real_pwd.strip('\n'): print('登陆成功') break else: print('用户名或密码错误') else: print('再见') break

文件操作模式

t: 文本模式 1.默认的模式 r w a >>> rt wt at 2.该模式所有操作都是以字符串为基本单位(文本) 3.该模式必须要指定encoding参数 4.该模式只能操作文本文件 b: 二进制模式 1.该模式可以操作任意类型的文件 2.该模式所有操作都是以bytes类型(二进制)为基本单位 3.该模式不需要指定encoding参数 rb wb ab

__EOF__

本文作者向上
本文链接https://www.cnblogs.com/ydy001/p/15541323.html
关于博主:没有收拾残局的能力,就别放纵善变的情绪
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   风花雪月*  阅读(472)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示