zoukankan      html  css  js  c++  java
  • 疫情环境下的网络学习笔记 python 3.13

    3.13

    昨日回顾

    集合内元素三个特征

    1. 必须为不可变类型
    2. 无序
    3. 不重复,只保留重复的一个元素

    集合的用途

    1. 去重,有局限性:必须为不可变,无法保证去重对象顺序
    2. 关系运算

    关系运算

    1. 交,并集,差,子集

    如何让python2不乱码

    1. 前两个阶段:#coding:,冒号后面的编码格式与当初存文件时的编码一致

      对字符串前的乱码问题,在字符串前加u,强制让python解释器用unicode存

    2. python3,加文件头

    编码解码

    • encode,decode
    • 一个字符,在内存中存成Unicode,print方法会把他对应成字符

    Unicode:可以转成所有其他编码格式

    •   x.encode('gbk')  #编码
      

      得到一个bytes类型 b

    •   x.decode()
      

    目前为止,讲的操作还在内存中,只适用于文本文件

    内存的Unicode往外encode,结果都是bytes类型,基于网络传输的也是bytes类型

    pycharm可以自订模板,Python Script模板中补充文件头

    •   #!/usr/bin/python3
        -*- coding:utf-8
      
    • 第一行 #!/.../python3 Linux中使用python解释器,确定python解释器安装的路径。或着用env

    • 在主文件包含调用多个文件的时候,只有主文件的文件头是有用的

    今日内容

    open()功能的使用

    1. 模式介绍

      1. 控制文件读写内容的模式

        • t文本

        • b二进制(bytes)

      2. 控制文件读写的模式

        • r只读模式
        • w只写模式
        • a只追加写
        • r+,w+,a+
        • 都有所限制
    2. 文件基本操作流程

      1. 打开文件
      2. 读写文件
      3. 关闭文件
    3. 资源回收与with语法

    4. 详细介绍文件模式

    5. 文件的操作方法

    正课

    文件

    什么是文件?

    • 文件是操作系统提供给用户 / 应用程序操作硬盘的一种功能

    为何要用文件?

    • 基于文件,用户/应用程序可以通过文件将数据永久保存到硬盘中
    • 通过文件操作硬盘:向操作系统发起调用

    如何用文件?

    • open(),两大类模式

      控制文本读写内容的模式:t,b

      t,b,不能单独使用,必须与w,r,a联用:控制的不是操作,而是指定操作的模式

      • t 文本,默认的模式
        1. 读写都以 str (Unicode)为单位,不能直接存到硬盘中
        2. 必须指定 encoding = ’utf-8’,如果不指定,可能使用别的模式
        3. 都是文本文件,不适用别的文件
      • b 二进制 / bytes

    文件操作基本流程

    三个步骤

    1. 打开文件
      • 涉及两方面的资源:操作系统,应用程序内存
    2. 操作文件:读 / 写
      • 读或着写,取决于你用什么模式
    3. 关闭文件

    打开文件

    open() 方法

    打开文件中输入路径的两种方法:r + ,/

    open(r'C:a
    ba.txt')  # 使用rawstring,得到原字符串不转译
    open('C:/a/nb/a.txt')  # 使用左斜杠
    

    有关绝对路径于相对路径

    • 绝对路径 Absolute Path:从头开始 C:UsersAdministratorDesktopPYTHONPYTHON上海3.13
    • 相对路径:以当前文件的文件夹为前缀(相对于当前文件夹),找到文件

    open() 方法,返回一个文件类型,赋值给f:一种数据类型,占用应用程序(python)的内存空间

    f = open(r'aaa/a.txt')
    

    通过 mode = 'rt' 指定模式,默认的模式就是rt

    操作文件

    读 / 写 文件,应用程序的读写请求都是在向操作系统发送系统调用,然后由操作系统控制硬盘把文件读 / 写入内存

    res = f.read() # 读文件方法
    print(res)
    

    关闭文件

    f.close()  # 调用操作系统功能,关闭操作系统打开的文件
    del f  # 解除变量名于文件的绑定,回收python中的内存,由于python中的自动回收机制,通常不需要考虑
    

    在关闭文件之后,可以用已经赋值的 f 得到文件的内容。关闭文件后不能再对文件操作,此时再 f.read(),则报错

    • 使用完文件后一定要关闭文件,因为操作系统同时打开的文件数目是有限的,打开多个文件不关闭会让别的文件打不开,系统性能下降

    with 语法

    with open('a.txt',mode = 'rt', encoding = 'utf-8') as f:
    	data = f.read()
    print(data)
    

    f 文件对象又称为文件句柄,用来控制文件

    with:执行 with 后面的句子中的enter函数,得到的返回值赋值给 as 后面的变量,再执行with后面句子的退出函数

    • 有了with语法之后,会自动调用open的 .close功能,不用怕忘记关闭文件

    • with 后面的执行语句可以有多个,也就是同时多个open() as f,两个执行语句之间用逗号 , 间隔

    • 右斜杠 把一段代码分为两行,下一行还算在上一行一起执行,为了美观

      with open('a.txt',mode='rt') as f,
          open('b.txt',mode='rt') as g:
          data1 = f.read()
          data2 = g.read()
      print(data1)
      print(data2)
      

    指定字符编码

    open() ,f.read(),调用操作系统的功能,打开文件,将f读入内存。f文本在硬盘上存放的是以一种编码方式编码的二进制

    with open('a.txt',mode='rt') as f:
        f.read()
    

    mode = ‘rt’ ,t模式规定得到的是str,也就是Unicode。本质上f.read读的硬盘中的文本是当时存入硬盘的格式,但是由于t模式,会将读出来的结果解码成Unicode。

    如果没有encoding=的参数,操作系统会使用默认的编码:mac,Linux系统为utf-8,Windows默认为gbk

    为了在用文件时不乱码,要在open中指定编码 encoding='utf-8'

    with open('a.txt',mode='a',encoding='utf-8') as f:
    	f.read()
    	f.write()
    

    此时读,写都用的utf-8编码,就不会报错了

    操作模式详解

    r 只读模式

    默认的操作模式,只读模式

    • 文件存在时,文件的指针放到最开始的位置

    •   with open('a.txt',mode='rt',encoding='utf-8') as f,
            data1 = f.read()
        print(data1)
      

      f.read() 从当前指针开始,读到最后,指针移到文件的最后

    • 文件中的空格,换行实际上也是字符,会被读出来

    • 整个文件一次性读出来,文件过大的时候会有问题

    改写用户登陆接口,把信息存入文件,重复运行或断电后仍能判断

    • 改进,文件中一行一行存放多段用户信息,需要读的时候逐行读出来 :

      for line in f:
          line.strip('
      ').split(':')
          print(line, end='')
      
      • for 循环用于逐行读取,一次读一个用户的信息
      • end = ’‘ 去除print函数自带的换行符
      • .strip(‘ ’) 去除原文件中,每个用户信息后面的换行
      • .split(‘:’)分开每个用户名和密码

    w 只写模式

    with open('d.txt',mode = 'wt',encoding = 'utf-8') as f:
    
    • 文件存在时,清空文件,指针位于开始位置

    • 文件不存在时,创建文件

    • 只写模式,不可读,用f.read功能会报错

      可以调用 f.write

    强调

    • 在w模式打开文件,文件没有关闭的情况下,可以连续地写

      随着write(),下一次写是顺着上一次写之后的光标位置接着写

      with open('d.txt',mode = 'wt',encoding = 'utf-8') as f:
      	f.write('111')
      	f.write('122')
      

    a 只追加写模式

    with open('d.txt',mode = 'at',encoding = 'utf-8') as f:
        pass
    

    文件不存在时创建空文档,文件存在时,指针跳到最后

    • 使用f.read()则报错,只能写不能读
    • 使用write(),从指针位置开始写内容

    w,与a模式的异同

    • 打开文件不关闭的情况下,连续地写入,新写的内容都会跟在之前写的内容之后
    • 以a模式重新打开文件,不会清空原文件内容,会将文件指针直接移动到末尾,通常用来纪录日志

    案例

    1. a 模式,注册功能
    2. 拷贝文件:rt模式打开原文件,wt模式创建新文件,新文件.write(原文件)

    可读可写模式

    • wt+

      可以读可以写,指针在文件开头,顺着指针开始写,调用f.read()的时候从指针位置往后读

    • at+

    • rt+

      可以读可以写,指针在文件开头,f.write()则在指针位置开始写,覆盖旧的内容

  • 相关阅读:
    毕业设计:文献参考(六)
    毕业设计:文献参考(五)
    稀疏数组搜索(leetcode)
    寻找重复数(leetcode)
    联通网络的操作次数(leetcode)
    Flutter 混合开发基础
    浅谈 Serverless 开发和应用
    基于 Qt Quick Plugin 快速构建桌面端跨平台组件
    Android 设备音视频兼容性适配
    RTC 系统音频弱网对抗技术发展与实践
  • 原文地址:https://www.cnblogs.com/telecasterfanclub/p/12488042.html
Copyright © 2011-2022 走看看