15Python文件操作
创始人
2024-04-29 18:39:16
0

文件处理

01. 文件的概念

1.1 文件的概念和作用

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

1.2 文件的存储方式

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

文本文件和二进制文件

  • 文本文件
    • 可以使用 文本编辑软件 查看
    • 本质上还是二进制文件
    • 例如:python 的源程序
  • 二进制文件
    • 保存的内容 不是给人直接阅读的,而是 提供给其他软件使用的
    • 例如:图片文件、音频文件、视频文件等等
    • 二进制文件不能使用 文本编辑软件 查看

02. 文件的基本操作

2.1 操作文件的套路

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

  1. 打开文件
  2. 读、写文件
    • 将文件内容读入内存
    • 将内存内容写入文件
  3. 关闭文件

2.2 操作文件的函数/方法

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

2.3 read 方法 —— 读取文件

  • open函数的第一个参数是要打开的文件名(文件名区分大小写)
    • 如果文件 存在,返回 文件操作对象
    • 如果文件 不存在,会 抛出异常
  • read 方法可以一次性 读入返回 文件的 所有内容
  • close方法负责关闭文件
    • 如果 忘记关闭文件会造成系统资源消耗,而且会影响到后续对文件的访问
  • 注意read 方法执行后,会把 文件指针 移动到 文件的末尾
# 1. 打开 - 文件名需要注意大小写
file = open("README")# 2. 读取
text = file.read()
print(text)# 3. 关闭
file.close()

提示

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

文件指针

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

2.4 打开文件的方式

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

语法如下:f = open("文件名", "访问方式")

访问方式说明
r只读方式打开文件。文件的指针将会放在文件的开头,这是默认模式。如果文件不存在,抛出异常
w只写方式打开文件。如果文件存在会被覆盖。如果文件不存在,创建新文件
a追加方式打开文件。如果该文件已存在,文件指针将会放在文件的结尾。如果文件不存在,创建新文件进行写入
r+读写方式打开文件。文件的指针将会放在文件的开头。如果文件不存在,抛出异常
w+读写方式打开文件。如果文件存在会被覆盖。如果文件不存在,创建新文件
a+读写方式打开文件。如果该文件已存在,文件指针将会放在文件的结尾。如果文件不存在,创建新文件进行写入

提示

  • 频繁的移动文件指针,会影响文件的读写效率,开发中更多的时候会以 只读只写 的方式来操作文件
# 打开文件
f = open("README", "w")f.write("hello python!\n")
f.write("今天天气真好")# 关闭文件
f.close()

2.5 按行读取文件内容

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

readline 方法

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

读取大文件的正确姿势

# 打开文件
file = open("README")while True:# 读取一行内容text = file.readline()# 判断是否读到内容if not text:break# 每读取一行的末尾已经有了一个 `\n`print(text, end="")# 关闭文件
file.close()

2.6 文件读写案例

小文件复制

# 1. 打开文件
file_read = open("README")
file_write = open("README[复件]", "w")# 2. 读取并写入文件
text = file_read.read()
file_write.write(text)# 3. 关闭文件
file_read.close()
file_write.close()

大文件复制

# 1. 打开文件
file_read = open("README")
file_write = open("README[复件]", "w")# 2. 读取并写入文件
while True:# 每次读取一行text = file_read.readline()# 判断是否读取到内容if not text:breakfile_write.write(text)# 3. 关闭文件
file_read.close()
file_write.close()

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

  • 在 终端 / 文件浏览器中可以执行常规的 文件 /目录 管理操作,例如:
    • 创建、重命名、删除、改变路径、查看目录内容、……
  • Python 中,如果希望通过程序实现上述功能,需要导入 os 模块

文件操作

序号方法名说明示例
01rename重命名文件os.rename(源文件名, 目标文件名)
02remove删除文件os.remove(文件名)

目录操作

序号方法名说明示例
01listdir目录列表os.listdir(目录名)
02mkdir创建目录os.mkdir(目录名)
03rmdir删除目录os.rmdir(目录名)
04getcwd获取当前目录os.getcwd()
05chdir修改工作目录os.chdir(目标目录)
06path.isdir判断是否是文件os.path.isdir(文件路径)

提示:文件或者目录操作都支持 相对路径 绝对路径

04. 文本文件的编码格式

4.1 ASCII 编码和 UNICODE 编码

ASCII 编码

  • 计算机中只有 256ASCII 字符
  • 一个 ASCII在内存中占用1 个字节的空间
    • 80/1 的排列组合方式一共有 256 种,也就是 2 ** 8

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-blLc1OLn-1671796733020)(15文件.assets/image-20221223195719802.png)]

UTF-8 编码格式

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

相关内容

热门资讯

银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
AsusVivobook无法开... 首先,我们可以尝试重置BIOS(Basic Input/Output System)来解决这个问题。...
ASM贪吃蛇游戏-解决错误的问... 要解决ASM贪吃蛇游戏中的错误问题,你可以按照以下步骤进行:首先,确定错误的具体表现和问题所在。在贪...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...