文件的操作和练习复习题

文件的操作和练习复习题

读写模式之a模式

a模式  只追加模式
路径不存在:自动创建
with open(r'a.txt','a', encoding = 'utf8') as f:
   pass
路径存在:不会清空文件 在文件末尾添加内容
with open(r'a.txt', 'a', encoding='utf8')as f:
f.write('/几天周四了 马上又要放假了 好开心!!!')
   
 
"""小总结
    我们所学习的r w a读写模式都只能操作文本文件
"""

文件操作方法

文件的操作方法
1.读系列
with open(r'a.txt', 'r', encoding='utf8')as f:
   print(f.read())         # 一次性读取文件内所有的内容
   print(f.readline())     # 每次只读文件一行内容
   print(f.readlines())    # 读取文件所有的内容 组织成列表 每个元素是文件的每行内容
   print(f.readable())     # 判断当前文件是否具备读的能力
   
   
2.写系列
with open(r'a.txt', 'w', encoding='utf8'):
   f.write('克服一切困难 奥利给!')         文件内写入文本内容
   f.write(123)                      写入的内容必须是字符串
   f.write(['jason','kevin', 'tony' ])   可以将咯额表中多个字符串元素全部写入
   print(f.readable())     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循环  相当于一行行读取文件内容
      line
   """以后涉及到多行文件内容的情况一般都是采用for循环读取"""
 

课堂练习

1.简易版本的注册、登录功能普通要求(实现一次即可)
  注册功能
      获取用户名和密码组织成你喜欢的样子写入文件即可
       登陆功能
      获取用户名和密码然后比对是否与文件内用户数据一致
 注册功能
     1.获取用户用户名和密码
     username = input('username>>>:').strip
     password = input('password>>>:').strip
     2.将用户名和密码组织成一个字符串
     data = %s|%s % (username,password)
     3.文件操作 写入代码
       with open(r'a.txt', 'w', encoding='ntf8') as f:
           f.with(data)
           print('用户:%s注册成功' % username)
           
  登录系统
      1.获取用户名和密码(先使用input获取用户输入的数据 然后strip()移除首尾空格 之后的赋值给变量名username)
       username = input('username>>>:').strip()
       password = input('password>>>:').strip()
       2.获取文件内真实的用户数据
       with open(r'a.txt', 'r', encoding='utf8') as f1:
      由于现在文件中只有一行内容  我们干脆直接读取完
           data = f.read()  'jason|jason123'
           """with子代码执行完之后的结果是可以在外面使用的"""
       切割字符串获取真实的用户名和密码
       res = data.split('|')   # ['jason', 'jason123']
       """这里也可以直接用解压赋值的操作   real_name,real_pwd = data.split('|')"""
       比对数据
       if username == res[0] and password == res[1]:
           print('登录成功')
       else
      print('用户或者密码错误')
     

文件操作模式

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

 

posted @ 2021-11-11 20:34  殷国敏  阅读(153)  评论(0)    收藏  举报