15Python文件操作

news2024/12/29 12:57:10

文件处理

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:
        break

    file_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 编码的一种编码格式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/111346.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

论文理解--DEEP COMPRESSION

原文链接: https://github.com/mit-han-lab/amc/security https://zhuanlan.zhihu.com/p/108096347 https://zhuanlan.zhihu.com/p/510905067 摘要 结论: 1、deep compression:由三阶段pipeline组成:pruning(剪枝)、 trained quantilization…

452页24万字智慧城市顶层设计及智慧应用解决方案

智慧城市总体设计 2.1 智慧城市核心技术 2.1.1 物联网 智慧城市是一个有机结合的大系统,涵盖了更透切的感知、更全面的互连,更深入的智能。物联网是智慧城市中非常重要的元素,它侧重于底层感知信息的采集与传输,城市范围内泛在网方…

无需调用Tecplot,PFC后处理技巧为你plot精美科研图

导读:PFC提供了非常美观的可视化处理的窗口—plot,用户可以在这里对模型的运行状态进行检查,也可以将Plot中的视图输出进行处理。一般来说plot中的图片质量足够用于常规的论文配图,当然用户也可以导出数据到tecplot中进行后处理&a…

【UE4 第一人称射击游戏】08-使用“AK47”发射子弹

上一篇: 【UE4 第一人称射击游戏】07-添加“AK47”武器 本节效果: 步骤: 1.在“Blueprints”文件夹内添加一个Actor蓝图,命名为“Projectile_Base”,该蓝图用于表示子弹 双击打开“Projectile_Base”,添加…

期货开户的身份识别验证

无论你是开通商品期货、原油期货还是股指期货以及期权,现在都支持网上办理!原油期货和股指期货以及期权品种都是在商品期货账户的基础上满足条件后再另外开通交易权限。叁格期权小编在这里为各位投资者详细介绍商品期货网上开户流程。 一、开户前准备 …

文件透明加密,保护重要数据的安全性

各种泄露事件使人们对信息安全问题的高度关注,随着加密技术的不断完善,主流透明加密技术被广泛应用于企业加密软件中。那么,这个技术如何保护电脑?有什么优点? 文件透明加密是最近几年发展出来的一种文件加解密技术。所…

RK3568平台开发系列讲解(工具命令篇)vim 编辑器的使用

🚀返回专栏总目录 文章目录 一、vim 编辑器有三种模式二、vim 编辑器移动光标三、vim 编辑器支持快速定位四、vim 编辑器的文本的复制和粘贴五、vim 编辑器使用快捷键来复制六、vim 编辑器的删除七、vim 编辑器的撤销八、vim 编辑器的查找九、vim 编辑器的替换十、vim 编辑器…

四、GradCAM可解释性分析——可解释性机器学习(DataWhale组队学习)

目录CAM算法回顾CAM算法流程CAM算法的精妙之处CAM算法的缺点GradCAMGrad-CAM算法的优点:Grad-CAM算法的缺点:Grad-CAM算法的改进Grad-CAM算法Score-CAM算法LayerCAM算法总结CAM算法回顾 CAM算法流程 输入原始图像,经过多层无池化的全卷积神经…

23种设计模式:单例设计模式(饿汉式 VS 懒汉式)

23种设计模式:单例设计模式(饿汉式 VS 懒汉式) 每博一文案 世事浮沉,有太多的责任需要我们担当,生活中总有些挫折和磨难,让我们觉得快要杠不住了。 但当我们咬牙坚持过那段难熬的时光后,发现并…

居家防护类设备的智能化解决方案

疫情防控政策优化后,你期待的消费暴涨如期而至了吗?近期,继自带“玄学”光环的黄桃罐头被疯抢之后,橘子水、葱姜水、古法掐喉咙消肿等缓解疼痛的“东方神秘法宝”再现各大视频平台。 面对此次居家隔离,哪些产品将再次…

(Java)欢乐的跳

欢乐的跳一、题目描述二、输入格式三、输出格式四、样例(1)样例输入1(2)样例输出1(3)样例输入2(4)样例输出2五、提示六、正确代码七、注意点以及思路(1)注意点…

【万字长文】从Linux零拷贝深入了解Linux I/O

前言 存储器是计算机的核心部件之一,在完全理想的状态下,存储器应该要同时具备以下三种特性: 速度足够快:存储器的存取速度应当快于 CPU 执行一条指令,这样 CPU 的效率才不会受限于存储器容量足够大:容量…

新闻发布系统的设计与实现/新闻管理系统

摘要 21世纪是信息的时代,是网络的时代,进入信息社会高速发展的时代,数字化革命给所有领域带来新的改变。传统的报纸杂志已经远远满足不了人们的需求,人们更加希望于能够在网上了解更多的新闻和信息,网页逐渐融入人们的…

实验二:数据查询实验

【实验目的】 熟练运用SQL语言实现数据查询,包括单表查询、分组查询、连接查询、嵌套查询、集合查询、oralce数据库常用函数等 【实验内容】 根据“数据导入”文档中的语句,将“费用明细表”和“科室字典”2张excel表内容导入数据库。然后拟定以下内容…

力扣刷题笔记day8(二维数组中的查找+旋转数组的最小数字+第一个只出现一次的字符)

文章目录二维数组中的查找题目思路代码旋转数组的最小数字题目思路代码第一个只出现一次的字符题目思路代码二维数组中的查找 在一个 n * m 的二维数组中,每一行都按照从左到右 非递减 的顺序排序,每一列都按照从上到下 非递减 的顺序排序。请完成一个高…

中级集成和高级信息系统项目管理怎么选?考哪个?

二者只有一个不同,高级需要考论文,如果有时间,有需求,就直接冲高级,一步到位; 下面一起看看两个科目的不同之处: 系统集成项目管理工程师 通过本考试的合格人员能够掌握系统集成项目管理的知识…

linux armhf ubuntu18.04搭建docker

1、开发环境 文件系统版本:ubuntu18.04 armhf 内核版本:linux4.1.15 docker版本:20.10.22 2、ubuntu上安装docker 1、卸载过往的版本 sudo apt-get remove docker docker-ce docker.io containerd runc2、重新更新、安装 sudo apt-get …

vue3+vite +element-plus+tailwindcss兼容低版本浏览器(uc)

部分问题 uc浏览器 rgb支持不全 如rgb(0 0 0 /30%) 这种写法不支持 tailwindcss v3 部分样式在低版本下也不支持 uc浏览器 对于 tailwindcss boxShadow 不支持 主要还是rgb原因 兼容 直接贴出代码 使用 tailwindcss 2.2.16 版本 v3低版本不支持 tailwindcss v2的 jit模式 和…

插值算法基本原理

插值:数据处理的手段 将缺失数据补全处理 线性内插 拉格朗日插值法 牛顿插值 拟合:预测,寻找规律的手段 是插值的外延 插值算法:使用在现有的数据极少,不足以支撑分析的进行,这时就需要使用一些数学方法…

植物激素基因高级分析来啦~

很多植物转录组学文章中,都有整合激素相关基因和表达数据的pathway图,直观地展示通路及其中重要基因的位置和功能。 植物激素(Phytohormone)亦称植物天然激素或植物内源激素,是指植物体内产生的一些微量而能调节&…