疫情环境下的网络学习笔记 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()则在指针位置开始写,覆盖旧的内容

原文地址:https://www.cnblogs.com/telecasterfanclub/p/12488042.html