• 文件操作


    文件操作  &  编码

    一:文件操作

    python.txt文件

    1, 文件路径:d:python.txt   (绝对路径)

     绝对路径:从根目录开始
        对路径:从当前位置开始
    2.  编码方式:UTF-8  GBK等
    3.  操作方式:只读,只写,追加,读写,写读
      如:简单文件读取

    绝对路径:
    f = open('d:python.txt',mode = 'r',encoding = 'UTF_8')
    content = f.read()
    print(content)
    f.close()
    相对路径:(在同一个文件夹里)
    f = open('python.txt',mode = 'r',encoding = 'UTF_8')
    content = f.read()
    print(content)
    f.close()

    注意:以什么方式储存的文件就要以什么方式打开
    操作:
    只读;mode = 'r'     或者  mode = ‘ rb’ 

               (r是以str的方式读出来;rb十一bytes方式读出来)(没有encoding)

                 rb的作用:打开图片,视频,写入,存入,上传下载都用rb
    只写mode = 'w'     或者  mode = ‘ wb’ 

    w :对于只写,没有此文件,就会创建,若有此文件先删除源文件的内容再写
       f = open('文件名',mode = 'w',encoding = 'UTF_8')
       f.write('内容')
       f.close()
    wb :以bytes写入,但显示出来得转化为UTf-8 f = open('文件名',mode = 'wb') f.write('内容'.encode(UTF-8)) f.close()

    追加mode = 'a'   或者mode = ' ab'

     原理:光标自动再原内容的末尾
      a:f = open('文件名',mode = 'a',encoding = 'UTF_8')
         f.write('需要追加的内容')
         f.close()
      ab:f = open('文件名',mode = 'ab')
         f.write('内容'.encode(UTF-8))
         f.close()

    读写mode = 'r+'  或者mode = ' r+b'

      如果在mode=‘r+’的模式下先写后读,则写入多少位从头开始占原来内容多少位。
      读出来的是原来的没有被占的内容。
      f = open('文件名',mode='rb',encoding='UTF-8')
      print(f.read())
      f.write('加油')
      f.close()

    写读mode = 'w+'   先把原文件内容删除,再写入,与‘w’的区别是‘w+’加上print(f.read())不会报错
    功能详解

    f.read()          #read读出来的都是字符,可选择读几个字符,如f.read(3)读前三个字符
    f.seek()          #按照字节定光标的位置;一个中文为三个字节;如f.seek(3)光标再第一个中文字符之后
    f.tell()          #告诉你光标的位置
    f.readable()      #是否可读,返回true或者false
    f.readline()      #一行一行的读;
    f.readlines()     #每一行当成列表中的元素,增加到列表中
    f.truncate()      #截取原文件的内容

    补充:

    ①for line in f:
        print(line)把f中的内容都读出来
    ②f = open('文件名',mode = 'r+',encoding='utf-8')
      f.close()的另一种写法
    with open('文件名',mode = 'r+',encoding='utf-8') as f:
        print(f.read())
    

    用with的好处:自动关闭,不用写close();也可以同时打开多个文件
    如:
    with open('文件名',mode = 'r+',encoding='utf-8') as f,
        with open('文件名',mode = 'w',encoding='utf-8') as f1:
            相关操作

    为啥要有文件处理:数据从内存到硬盘的过程
    登陆注册:
    要求:①注册②注册的用户名和密码写入到文件③登录时从文件取出用户名和密码来匹配输入的用户名和密码
              ④若匹配失败,有三次机会

    username = input('请输入注册的用户名:')
    password = input('请输入注册的密码:')
    with open('登陆注册信息文件',mode = 'w',encoding = 'UTF-8') as f:
        f.write('{}
    {}'.format(username,password))
        print('恭喜你,注册成功!')
    lis = []
    i = 0
    while i < 3:
        i += 1
        uname = input('请输入用户名:')
        pword = input('请输入密码:')
        with open('登陆注册信息文件', mode='r', encoding='UTF-8') as f1:
            for line in f1:
                lis.append(line)
        if  uname == lis[0].strip() and pword == lis[1]:
            print('登陆成功')
        else:
            print('账号或者密码错误')
    

    修改文件:

    文件不能修改,若非得修改,用replace,删除文件,重命名文件(实际是新文件替换旧文件)

    with open('旧文件',encoding = 'utf-8') as f,
        with open('旧文件.bak',mode = 'w',encoding = 'utf-8') as f1:
              for line in f:
                  if '要修改的内容' in line:
                      line = line.replace('要修改的内容','新内容')
              f1.write(line)  #写文件
    import os
    os.remove('旧文件')   #删除文件
    os.rename('旧文件.bak','旧文件') #重命名
    

      

  • 相关阅读:
    推荐一款国内首个开源全链路压测平台
    redis 你真的懂了吗?
    吊炸天的可视化安全框架,轻松搭建自己的认证授权平台!
    一条简单的更新语句,MySQL是如何加锁的?
    mysql 表删除一半数据,表空间会变小吗?
    调研字节码插桩技术,用于系统监控设计和实现
    这个开源工具把网页变成本地应用程序
    20160924-2——mysql常见问题集锦
    20160924-1——mysql存储引擎
    20160916-4:数据恢复
  • 原文地址:https://www.cnblogs.com/twinkle-/p/10486332.html
Copyright © 2020-2023  润新知