zoukankan      html  css  js  c++  java
  • day 07 文件操作

    一、什么是文件?
    操作系统提供给用户操作复杂硬件(硬盘)的简易的接口

    2.为什么操作文件
    人或者应用程序需要永久的保存数据

    3.三个使用方法:

    f = open()
    f.read()  #  向操作系统发请求 读取文件内容
    f.close()   #  告诉操作系统 关闭打开的文件

    4.形式:

    #  r取消转义

    f=open(r'地址或相对地址',encoding='utf-8')
    
    print(f.read())

    5.通过python代码操作文件:

    #   f是文件对象。f仅仅是一个变量名 你把它看成是一个遥控器

    f = open(r'C:Program FilesfeiqRecv Filesday05a.txt',encoding='utf-8') 
    
    print(f) 
    
    print(f.read())    # 读取文件。

    #  此时pyhton中‘f’被垃圾清理掉;而windows系统没有文件,使用.close关闭文件

    .close

    #windows操作系统默认的编码是gbk.因此需要指定dicoding=utf-8

    5. 文件上下文操作

    格式:

    with open(r'地址或相对地址',encoding='utf-8') as f:
      print(f.read())
    with open(r'C:Program FilesfeiqRecv Filesday05a.txt',encoding='utf-8') as f :
     #  f仅仅是一个变量名 你把它看成是一个遥控器。在as后面加入,表示同时打开多个
      print(f)
      print(f.read())

    二、文件的打开模式

    r 只读模式

    w 只写模式
    a 追加写模式
    操作文件单位的方式
    t 文本文件   # t在使用的时候需要指定encoding参数 如果不指定,默认是操作系统的默认编码;t文本文件只针对文本,不支持图片
    b 二进制    #无需指定encoding编码。二进制不需要编码。针对图片等。最主要二进制代码可以发送出去

     2.1 格式

    1.针对一般文本t

    with open(r'相对地址或绝对地址',mode='rt',encoding='utf-8') as f:
    
      print(f.read())

    2.针对图片b

    with open(r'相对地址或绝对地址' mode=rb) as f
    
      print(f.read())

    注意:

    1.mode参数名可以不写,默认就是r和t(只读文本),如果只写w或a,默认加上t,这个t默认也是不写

    2.print(f.read())

    r模式在打开文件的时候 如果文件不存在 直接报错。这是与w模式和a模式不一样的地方。w和a则会新建一个文档

    mode关键字可以不写:如下
    
     with open(r'a.txt',mode='r',encoding='utf-8') as f:
     with open(r'a.txt','r',encoding='utf-8') as f1:  
        # print(f.readable())  # 是否可读
        # print(f.writable())  # 是否可写
       read将文件内容一次性读出,不可重复读出。因为光标始终在最后了。以下演示读取两次
        # print(f.read())  
        # print('>>>2:')
        # print(f.read()) #无结果,但不报错
    f文件对象的内置方法(取出文件内容):
    1.readlines
     print(f.readlines())  # 返回的是一个列表  列表中的一个个元素对应的就是文件的一行行内容
    #  ['fdsfsdfafasdfasdffsdfas
    ', 'fsdf
    ', 'sdaf
    ', 'sa
    ', 'fs
    ', 'ef
    ', 'f']
    .readines的原理就是for循环取值
    for line in f:  # f可以被for循环 每for循环依次 读一行内容
          print(i)  # 这个方法就可以解决大文件一次性读取占用内存过高的问题;
                对比之前.read()一次读取
    
    2.readlin()#  对比1,没有s,顾名思义,打印一行.readline则读取一行 
    print(f.readline())  # 注意加,end=‘’取消换行
     print(f.readline())
     print(f.readline())
     print(f.readline())
     w模式:w模式一定要慎用
     1.文件不存在的情况下 自动创建该文件
     2.当文件存在的情况下 会先清空文件内容再写入
    w模式中f.write()方法:一次写一行
     with open(r'xxx.txt','w',encoding='utf-8') as f:
         print(f.readable())  # 是否可读
         print(f.writable())  # 是否可写
         f.write('不不不,你没有翻~
    ')
         f.write('不不不,你没有翻~
    ')
         f.write('不不不,你没有翻~
    ')
         f.write('不不不,你没有翻~
    ')
         f.write('不不不,你没有翻~')
    
    w模式中f.writelines()方法:一次写多行。传容器类型,将列表写入文件
         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())  # 是否可读
         f.write('我是小尾巴
    ')
     
  • 相关阅读:
    js 树型数据 转 数组
    js 数组转树型结构数据
    计算 手机端页面高度和宽度
    解密优酷智能生产技术,看 AI 赋能内容数字化
    从 FFmpeg 性能加速到端云一体媒体系统优化
    导播上云,把 “虚拟演播厅” 搬到奥运村
    揭秘阿里云 RTS SDK 是如何实现直播降低延迟和卡顿
    迈入 8K 时代,AI 驱动超高清 “视” 界到来
    千亿级市场赛道,阿里云视频云拿下 “三连冠”
    50 亿观众的 “云上奥运”,顶级媒体背后的数智化力量
  • 原文地址:https://www.cnblogs.com/ZDQ1/p/11139343.html
Copyright © 2011-2022 走看看