Python_从零开始学习_(45) 文件

1.  文件的概念


1.1  文件的概念和作用

  • 计算机的 文件,  就是存储在某种 长期储存设备 上的一段 数据
  • 长期储存设备包括: 硬盘,U盘,移动硬盘,光盘...

文件的作用

将数据长期保持下来,  在需要的时候使用

1.2  文件的储存方式

  • 在计算机中,  文件是以 二进制 的方式保持在磁盘上的

文本文件和二进制文件

  • 文本文件

         可以使用 文本编辑软件 查看

         本质上海市二进制文件

         例如: python 的源程序
  • 二进制文件

         保存的内容 不是给人直接阅读的,  二十 提供给其他软件使用的

         
    例如:  图片文件,  音频文件,  视频文件等等

         二进制文件不能使用 文本编辑软件 查看

2.  文件的基本操作


2.1  操作文件的套路

在 计算机 中要操作文件的套路非常固定,  一共包含三个步骤:

  1. 打开文件
  2. 读, 写 文件

    读 将文件内容读入内存

    写 将内存内容写入文件
     
  3. 关闭文件

2.2  操作文件的函数 / 方法

  • 在 Python 中要操作文件需要记住 1 个函数和 3 个方法
序号 函数 / 方法 说明
1 open 打开文件,  并且返回文件操作对象
read 将文件内容读取到内存
3 write 将指定内容写入文件
4 close 关闭文件
  • open 函数负责打开文件,  并且返回文件对象
  • read / write / close 三个方法都需要通过 文件对象 来调用

2.3  read 方法 ---- 读取文件

  • open 函数的第一个参数是要打开的文件名

    如果文件 存在,  返回 文件操作对象

    如果文件 不存在,  会 抛出异常
  • read 方法可以一次性 读入 并 返回 文件的 所有内容
  • close 方法赋值 关闭文件 (ps : 如果忘记关闭文件, 会造成系统资源消耗,  而且会影响到后续对文件的访问)
  • 注意:  方法执行后,  会把 文件指针 移动到 文件的末尾
# 1. 打开文件
file = open("README")

# 2. 读取文件内容
text = file.read()
print(text)

# 3. 关闭
file.close()

提示

  • 在开发中,  通常会先编写 打开 和 关闭 的代码,  再编写中间针对文件的 读 / 写 操作!

文件指针 (知道)

  • 文件指针 标记 从哪个位置开始读取数据
  • 第一次打开 文件时,  通常  文件指针会指向文件的开始位置
  • 当执行了 read 方法后,  文件指针 会移动到 读取内容的末尾

    默认情况下会移动到 文件末尾

思考

  • 如果执行了一次 read 方法,  读取了所有内容,  那么再次调用 read 方法,  还能够获得到内容吗?

答案

  • 不能
  • 第一次读取之后,  文件指针移动到了文件末尾,  再次调用不会读取到任何的内容

2.4  打开文件的方式

  • open 函数默认以 只读方式 打开文件,  并且返回文件对象

   语法如下 : 

f = open("文件名", "访问方式")
访问方式 说明
r 以 只读 方式打开文件. 文件的指针将会放在文件的开头, 这是 默认模式. 如果文件不存在, 抛出异常
w

以 只写 方式打开文件. 如果文件存在会被覆盖. 如果文件不存在, 创建新文件

a 以 追加 方式打开文件. 如果该文件已存在, 文件指针将会放在文件的结尾. 如果文件不存在, 穿件新文件进行写入
r+

读写 方式打开文件, 文件的指针将会放在文件的开头. 如果文件不存在, 抛出异常

w+ 读写 方式打开文件, 如果文件存在会被覆盖. 如果文件不存在, 创建新文件
a+ 读写 方式打开文件. 如果该文件已存在,  文件指针将会放在文件的结尾, 如果文件不存在,创建新文件进行写入

提示

  • 频繁的移动文件指针,  会影响文件的读写效率,  开发中更多的时候会以 只读, 只写 的方式来操作文件

2.5  按行读取文件内容

  • read 方法默认会把文件的 所有内容 一次性读取到内存
  • 如果文件太大,  对内存的占用会非常严重

readline方法

  • readline 方法可以一次读取一行内容
  • 方法执行后,  会把 文件指针 移动到下一行,  准备再次读取

读取大文件的正确姿势

# 1. 打开文件
file = open("README")

# 2. 读取文件内容
while True:
    text = file.readline()

    #  判断时候有内容
    if not text:
        break
    print(text)

# 3. 关闭
file.close()

2.6  文件读写案例 ---- 复制文件

小文件复制

  • 打开一个已有文件,  读取完整内容, 并写入到另一个文件
# 1. 打开文件
file = open("README")
file2 = open("README2", "w")

# 2. 读, 写文件内容
text = file.read()
file2.write(text)

# 3. 关闭
file.close()
file2.close()

大文件复制

  • 一行一行读, 写
# 1. 打开文件
file = open("README")
file2 = open("README2", "w")

# 2. 读, 写文件内容
while True:
    # 读取一行内容
    text = file.readline()
    # 判断时候读取到内容
    if not text:
        break
    # 每次写入文件指针会到文件的末尾
    file2.write(text)

# 3. 关闭
file.close()
file2.close()

3.  文件 / 目录的常用管理操作


  • 在 终端 / 文件浏览器,  中可以执行常规的 文件 / 目录 管理操作
  • 在 Python 中,  如果希望通过程序实现上述功能,  需要导入 os 模块

略 ...

4.  文件文本的编码格式

  • 文本文件存储的内容是基于 字符编码 的文件,  常见的编码有 ASCII 编码 , UNICODE 编码等

Python 2.x 默认使用 ASCII 编码

Python 3.x 默认使用 UTF-8 编码

4.1  ASCII 编码 和 UNICODE 编码

ASCII 编码

  • 计算机中只有 256 个ASCII 编码
  • 一个 ASCII 在内存中占用 1个字节 的空间

UTF-8 编码

  • 计算机中使用 1-6 个字节 来表示一个 UTF-8 字符, 涵盖了 地球上几乎所有地区的文字
  • 大多数汉子会使用 3个字节 表示
  • UTF-8 是 UNICODE 编码的一种编码格式

猜你喜欢

转载自blog.csdn.net/jiandan1127/article/details/83583757