zoukankan      html  css  js  c++  java
  • 20文件

     

    1. 文件的概念


    1.1 文件的概念和作用

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

    文件的作用

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

    1.2 文件的储存方式

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

    文本文件和二进制文件

    • 文本文件

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

      本质上是二进制文件

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

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

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

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

    2. 文件的基本操作


    2.1 操作文件的套路

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

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

      读 将文件内容读入内存

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

    2.2 操作文件的函数 / 方法

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

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

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

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

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

    提示

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

    文件指针 (知道)

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

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

    思考

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

    答案

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

    2.4 打开文件的方式

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

    语法如下 : 

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

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

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

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

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

    提示

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

    2.5 按行读取文件内容

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

    readline方法

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

    读取大文件的正确姿势

     1 # 1. 打开文件
     2 file = open("README")
     3 
     4 # 2. 读取文件内容
     5 while True:
     6     text = file.readline()
     7 
     8     #  判断时候有内容
     9     if not text:
    10         break
    11     print(text)
    12 
    13 # 3. 关闭
    14 file.close()

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

    小文件复制

    • 打开一个已有文件, 读取完整内容, 并写入到另一个文件
     1 # 1. 打开文件
     2 file = open("README")
     3 file2 = open("README2", "w")
     4 
     5 # 2. 读, 写文件内容
     6 text = file.read()
     7 file2.write(text)
     8 
     9 # 3. 关闭
    10 file.close()
    11 file2.close()

    大文件复制

    • 一行一行读, 写
     1 # 1. 打开文件
     2 file = open("README")
     3 file2 = open("README2", "w")
     4 
     5 # 2. 读, 写文件内容
     6 while True:
     7     # 读取一行内容
     8     text = file.readline()
     9     # 判断时候读取到内容
    10     if not text:
    11         break
    12     # 每次写入文件指针会到文件的末尾
    13     file2.write(text)
    14 
    15 # 3. 关闭
    16 file.close()
    17 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 编码的一种编码格式
  • 相关阅读:
    codeforces 669C C. Little Artem and Matrix(水题)
    codeforces 669B B. Little Artem and Grasshopper(水题)
    oracle drop table recyclebin恢复
    odu恢复drop表--不通过logmnr挖掘object_id
    odu恢复drop表--通过logmnr挖掘object_id
    odu恢复delete 表
    GO学习-(7) Go语言基础之流程控制
    GO学习-(6) Go语言基础之运算符
    GO学习-(4) Go语言基础之变量和常量
    GO学习-(3) VS Code配置Go语言开发环境
  • 原文地址:https://www.cnblogs.com/xinmomoyan/p/10352950.html
Copyright © 2011-2022 走看看