• 文件操作


    文件操作

    什么文件?

      操作系统提供给用户操作复杂硬件(硬盘)的简易的接口

    为什么操作文件

      人或者应用程序需要永久的保存数据

    文件的打开过程

    • step1 点击需要打开的文件
    • step2 操作系统接收到命令,将文件路径传送给CPU
    • step3 CPU根据路径去硬盘中寻找文件,然后调取到内存中
    • step4 操作系统将调取的文件显示出来,可进行读写保存等操作

    文件打开的模式

      r 只读模式

      w 只写模式

      a 追加写模式

    操作文件单位的方式

      t 文本文件  t在使用的时候需要指定encoding参数 如果不知道默认是操作系统的默认编码
      b 二进制 (因为已经制定了用二进制模式)所以一定不能指定encoding参数

    mode参数

      可以不写  不写的话默认是rt 只读的文本文件  这个t不写默认就是t

      r模式

    with open(r'D:Python项目day07a.txt',mode='r',encoding='utf-8') as f:
        print(f.readable())  # 是否可读
        print(f.writable())  # 是否可写
        print(f.read())  # 一次性将文件内容全部读出
    # r模式在打开文件的时候 如果文件不存在 直接报错
    # 文件路径可以写相对路径 但是需要注意该文件必须与执行文件在同一层文件下
    with open(r'a.txt',mode='r',encoding='utf-8') as f:
    with open(r'a.txt','r',encoding='utf-8') as f1:  mode关键字可以不写
        print(f.readable())  # 是否可读
        print(f.writable())  # 是否可写
        print(">>>1:")
        print(f.read())  # 一次性将文件内容全部读出
        print('>>>2:')
        print(f.read())  # 读完一次之后 文件的光标已经在文件末尾了,再读就没有内容了可读
        print(f.readlines())  # 返回的是一个列表  列表中的一个个元素对应的就是文件的一行行内容
        for line in f:  # f可以被for循环 每for循环依次 读一行内容
            print(i)  # 这个方法 就可以解决大文件一次性读取占用内存过高的问题
        print(f.readline())  # 只读取文件一行内容
        print(f.readline())
        print(f.readline())
        print(f.readline())

      w模式(慎用)

    # 1.文件不存在的情况下 自动创建该文件
    # 2.当文件存在的情况下 会先清空文件内容再写入
    with open(r'xxx.txt',mode='w',encoding='utf-8') as f:
        print(f.readable())  # 是否可读
        print(f.writable())  # 是否可写
        f.write('不不不,你没有翻~
    ')
        f.write('不不不,你没有翻~
    ')
        f.write('不不不,你没有翻~
    ')
        f.write('不不不,你没有翻~
    ')
        f.write('不不不,你没有翻~')
        l = ['不sdffs,sdfs有翻~
    ','不sdfsdf不,你sdfsf翻~
    ','不sfad不,你没sa翻~
    ']
        f.writelines(l)
        # 上下等价
        for i in l:
            f.write(i)

      a模式

    # 1.当文件不存在的情况下 自动创建该文件
    # 2.当文件存在的情况下,不清空文件内容, 文件的光标会移动文件的最后
    with open(r'yyy.txt',mode='a',encoding='utf-8') as f:
        print(f.readable())  # 是否可读
        print(f.writable())  # 是否可写
        f.write('我是小尾巴
    ')

    其他模式补充

    “纯净模式”

    r 只读模式

    w 写模式

    a 追加写模式

    “其他模式”

    r+

    w+

    a+

    r+模式

    # 执行前的test.txt
    # >>>>>>
    
    天上的地上的
    水里的
    看的见的看不见的都是
    
    # >>>>>>
    with open(r'test.txt',mode='r+',encoding='utf-8') as f:
        print(f.readable())  # True # 是否可读
        print(f.writable())  # True # 是否可写
        print(f.readline())  # 天上的地上的 # 输出第一行内容 
        f.write('都是你的')
    # 执行后的test.txt
    # >>>>>>
    
    天上的地上的
    水里的
    看的见的看不见的都是你的
    
    # >>>>>>

    在文档末尾加上了"都是你的"
    # 当你指定r+b模式,即读为二进制
    with open(r'test.txt',mode='r+b') as f:
        # 第一种解码方式
        res = f.read()
        print(res.decode('utf-8'))  # 都不见了
    
        #第二种解码方式
        res1 = str(res,encoding='utf-8')
        print(res1)  # 都不见了

    w+模式

    # w+模式下执行前的test.txt
    # >>>>>>
    
    天上的地上的
    水里的
    看的见的看不见的都是你的
    
    # >>>>>>
    with open(r'test.txt',mode='w+',encoding='utf-8') as f:
        print(f.readable())
        print(f.writable())
        print(f.readline())
        f.write('都不见了')
    # w+模式下执行后的test.txt
    # >>>>>>
    
    都不见了
    
    # >>>>>>
  • 相关阅读:
    介绍一款能取代 Scrapy 的 Python 爬虫框架
    盘点 Django 展示可视化图表的多种方式(建议收藏)
    阿里最强 Python 自动化工具开源了!
    推荐一款小众且好用的 Python 爬虫库
    该死的端口占用!教你用 Shell 脚本一键干掉它!
    字节跳动实习面经分享(已拿offer附攻略)
    这样给小白讲原码、反码、补码,帮她彻底解决困扰了三天的问题
    并查集是一种怎样的数据结构?
    约瑟夫环问题的三种解法,一文搞定
    数据结构:栈详解
  • 原文地址:https://www.cnblogs.com/PowerTips/p/11146087.html
Copyright © 2020-2023  润新知