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

posted @ 2021-11-11 19:10  风花雪月*  阅读(399)  评论(0编辑  收藏  举报