一篇文章搞懂Python的文件读写

目录

一、打开文件

二、读取文件内容

三、写入文件内容

四、追加内容到文件末尾

五、文件路径

六、错误处理

七、关闭文件

八、文件读写的高级功能

总结


在Python中,文件读写是一项常见的操作。通过文件读写,我们可以保存数据,加载数据,读取文件内容等等。本文将带您了解Python中的文件读写,并帮助您理解其中的一些重要概念。

一、打开文件

在Python中,要打开一个文件,我们需要使用内置的open()函数。open()函数需要两个参数:文件名和打开模式。打开模式决定了我们要如何与文件交互。

以下是几个常见的打开模式:

  • 'r':只读模式。打开一个用于读取的文件。该文件必须存在。
  • 'w':写入模式。打开一个用于写入的文件。如果文件不存在,则会创建一个新文件。如果文件已经存在,则会覆盖该文件的内容。
  • 'a':追加模式。打开一个用于写入的文件。如果文件不存在,则会创建一个新文件。如果文件已经存在,则会在文件的末尾追加内容。
  • 'x':独占创建模式。创建一个新文件用于写入。如果文件已经存在,则会引发异常。
  • 'b':二进制模式。该模式以二进制方式打开文件。
  • 't':文本模式(默认模式)。该模式以文本方式打开文件。

下面是一个简单的例子,演示如何以只读模式打开一个文件:

file = open('example.txt', 'r')

这将打开名为example.txt的文件,并将其保存在名为file的对象中。请注意,为了防止资源泄漏,我们在完成文件操作后需要关闭文件。可以使用close()方法或使用with语句来自动关闭文件。

二、读取文件内容

一旦打开了文件,我们就可以使用read()方法来读取文件的内容。例如:

file = open('example.txt', 'r')  
content = file.read()  
print(content)

这将读取example.txt文件的内容,并将其打印到控制台中。请注意,read()方法将读取文件的全部内容,并将其作为一个字符串返回。如果文件很大,则可能会占用大量内存。在这种情况下,我们可以使用readlines()方法逐行读取文件内容:

file = open('example.txt', 'r')  
lines = file.readlines()  
for line in lines:  
    print(line)

这将逐行读取example.txt文件的内容,并将其打印到控制台中。readlines()方法返回一个包含所有行的列表,每行都是字符串类型。

三、写入文件内容

要写入文件内容,我们可以使用write()方法。例如:

file = open('example.txt', 'w')  
file.write('Hello, world!')  
file.close()

这将创建一个名为example.txt的新文件(如果该文件不存在),并在其中写入字符串"Hello, world!"。请注意,write()方法不会自动添加换行符,因此如果您需要在每行之间添加换行符,则需要在字符串末尾添加换行符('\n')。此外,在完成写入后,我们需要调用close()方法来关闭文件。

四、追加内容到文件末尾

如果您想将内容追加到文件的末尾而不是覆盖整个文件的内容,则可以使用'a'模式打开文件,并使用write()方法将内容写入文件中:

file = open('example.txt', 'a')  
file.write('Hello, again!')  
file.close()

这将向example.txt文件的末尾添加字符串"Hello, again!"。请注意,如果example.txt不存在,则会创建一个新文件。

五、文件路径

在打开文件时,我们可以使用绝对路径或相对路径指定文件的位置。绝对路径是从根目录开始的完整文件路径,而相对路径是从当前工作目录开始的文件路径。

例如,如果我们要打开位于C盘根目录下的example.txt文件,我们可以使用以下代码:

file = open('C:/example.txt', 'r')

如果我们要打开与当前Python脚本同一目录下的example.txt文件,我们可以使用以下代码:

file = open('./example.txt', 'r')

六、错误处理

在进行文件读写操作时,可能会遇到各种错误,例如文件不存在,文件访问权限不足等。为了避免程序崩溃,我们可以使用try-except语句来捕获和处理这些错误。

例如,以下代码演示了如何打开一个不存在的文件,并在出现异常时打印一条错误消息:

try:  
    file = open('nonexistent.txt', 'r')  
except FileNotFoundError:  
    print('File not found')

七、关闭文件

在完成文件操作后,我们应始终关闭文件,以释放系统资源。可以使用close()方法显式关闭文件,或者使用with语句自动关闭文件。

例如,以下代码演示了如何使用close()方法关闭文件:

file = open('example.txt', 'r')  
content = file.read()  
file.close()

或者,我们可以使用with语句自动关闭文件:

with open('example.txt', 'r') as file:  
    content = file.read()

无论使用哪种方法,我们都需要确保在完成文件操作后关闭文件。

八、文件读写的高级功能

除了基本的文件读写操作外,Python还提供了许多高级的文件读写功能。以下是一些常用的高级功能:

  1. 文件指针:使用seek()方法可以移动文件指针到指定位置。这对于读取文件的特定部分或跳过某些内容非常有用。
  2. 文件锁定:在多线程或多进程环境中,可以使用文件锁定来确保对文件的并发访问是安全的。Python的filelock模块提供了文件锁定的功能。
  3. 压缩文件读写:Python提供了许多用于读写压缩文件的库,例如gzip、bz2和zipfile。这些库可以方便地读取和写入压缩文件。
  4. 读取二进制文件:对于读取二进制文件,可以使用read()方法一次读取指定数量的字节,或者使用readline()和readlines()方法逐行或逐行列表读取内容。
  5. 写入二进制文件:与读取二进制文件类似,对于写入二进制文件,可以使用write()方法一次写入指定数量的字节。

总结

Python的文件读写功能非常强大和灵活。通过掌握这些基本概念和高级功能,我们可以轻松地处理文件读写操作,并更好地利用Python的文件处理能力。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

算法学习记录:动态规划

前言: 算法学习记录不是算法介绍,本文记录的是从零开始的学习过程(见到的例题,代码的理解……),所有内容按学习顺序更新,而且不保证正确,如有错误,请帮助指出。 学习工具…

Find My资讯|苹果Apple Pencil 3将支持Find My定位查找功能

国外科技媒体 9to5Mac 深挖 iOS 17.4 Beta 1 更新代码,发现了 Apple Pencil 3 的踪迹,并显示该手写笔支持 Find My 功能。这就意味着可以和 AirPods 和 AirTags 一样,用户可以通过 Find My 网络,寻找丢失的 Apple Pencil 手写笔。…

Kotlin for loop: in、 until、 step、 downTo

Kotlin for loop: in、 until、 step、 downTo fun loop1() {for (i in 0..5) {print("$i ")}println("\n1-end\n") }fun loop2() {for (i in 0 until 5) {print("$i ")}println("\n2-end\n") }fun loop3() {for (i in 0 until (5)) {…

探索Viper-适用于GoLang的完整配置解决方案

前言 对于现代应用程序,尤其大中型的项目来说,在程序启动和运行时,往往需要传入许多参数来控制程序的行为,我们可以通过命令行参数,环境变量,配置文件等方式来将参数传递给程序。而Viper库为Golang语言开发…

LabVIEW继电器触点接触电阻自动测试

继电器作为工业中的重要组件,其性能直接影响着整个生产线的可靠性和安全性。触点接触电阻是衡量继电器性能的重要参数,传统的测试方法效率低下且成本高昂。为了解决这些问题,采用LabVIEW软件,结合专业的硬件平台,实现了…

备战蓝桥杯----数据结构及STL应用(基础2)

上次我们讲了vector的大致内容,接下来让我们讲一下栈,队列吧! 什么是栈呢? 很简单,我们用的羽毛球桶就是,我们取的球,是最后放的,栈是一种先进后出的数据结构。 方法函数 s.push(…

怎样做好Code Review

Code Review方案 定义 Code Review代码评审是指在软件开发过程中,通过对源代码进行系统性检查的过程。通常的目的是查找各种缺陷,包括代码缺陷、功能实现问题、编码合理性、性能优化等;保证软件总体质量和提高开发者自身水平 code review …

SRM是什么意思?SRM供应商管理系统哪个好?

阅读本文,您将了解:一、SRM是什么意思;二、SRM的应用价值;三、SRM供应商管理系统哪个好?推荐在零代码平台自主开发。 在当今快速变化的商业环境中,企业之间的协作和效率至关重要。供应链管理作为企业运营的…

HarmonyOS鸿蒙学习笔记(24)AppScope的icon和UIAblity的icon的区别

在HarmonyOS中有两个配置文件app.json5配置文件和module.json5配置文件,两个配置文件都有icon和label标签: 二者区别如下: app.json5的icon app.json5里面的icon和label:对应的是应用图标和应用标签,应用图标和标签是在设置应用…

HarmonyOS --@state状态装饰器

在声明式UI中,是以状态驱动视图更新。 状态(state):指驱动视图更新的数据(被装饰器标记的变量)。 试图(view):基于UI描述渲染得到用户界面 State装饰器标记的变量必须初…

C# Socket 允许控制台应用通过防火墙

需求: 在代码中将exe添加到防火墙规则中,允许Socket通过 添加库引用 效果: 一键三联 若可用记得点赞评论收藏哦,你的支持就是写作的动力。 源地址: https://gist.github.com/cstrahan/513804 调用代码: private static void …

雅特力AT32 Workbench图形化代码生成工具,简化嵌入式开发利器

嵌入式系统应用市场广泛,早已遍及日常生活,随着产品需求复杂度的提升,32位MCU开发难度也随之增加,如何降低开发成本,缩短开发周期,是所有嵌入式开发人员的共同课题。 面对市场竞争日益加剧的情形&#xff…

【Web前端实操17】导航栏效果——滑动门

滑动门 定义: 类似于这种: 滑到导航栏的某一项就会出现相应的画面,里面有对应的画面出现。 箭头图标操作和引用: 像一些图标,如果需要的话,可以找字体图标,比如阿里巴巴矢量图标库:iconfont-阿里巴巴矢量图标库 选择一个——>添加至购物车——>下载代码 因…

实战 | OpenCV+OCR实现弧形文字识别实例(详细步骤 + 源码)

导 读 本文主要介绍基于OpenCV+OCR实现弧形文字识别实例,并给详细步骤和代码。源码在文末。 背景介绍 测试图如下,目标是正确识别图中的字符。图片来源: https://www.51halcon.com/forum.php?mod=viewthread&tid=6712 同样,论坛中已经给出了Halcon实现代码,…

Linux文件管理(下)

上上篇介绍了Linux文件管理的上部分内容,这次继续将 Linux文件管理的剩余部分说完。内容如下。 一、查看文件内容 1、cat 命令 1.1 输出文件内容 基本语法: cat 文件名称主要功能:正序输出文件的内容。 eg:输出 readme.txt文…

《幻兽帕鲁》1月29日游戏服务器推荐!腾讯云降低规格再次降价!

腾讯29日刷新规格,从14M降低到12M,硬盘和流量都有降低,但价格打下来了!价格从66元/月降低到32元/月,277元/3个月降低到96元/3个月! 三大厂商4核16G的云服务器价格对齐,不过具体参数略有不同 阿里…

w24文件上传之PHP伪协议

PHP支持的伪协议 file:// - 访问本地文件系统 http:// - 访问网址 ftp:// - 访问文件 php:// -访问各个输入/输出流 zlib:// -压缩流 data:// - 数据 glob:// -查找匹配的文件路径模式 phar:// - php归档 ssh2:// - Secure shell 2 rar:// - RAR ogg:// - 音频流 expect:// - …

力扣(LeetCode)227. 基本计算器 II

给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。 整数除法仅保留整数部分。 你可以假设给定的表达式总是有效的。所有中间结果将在 [-231, 231 - 1] 的范围内。 注意:不允许使用任何将字符串作为数学表达式计算的内置函数&#…

还能这样学Linux内核,非我族类!

哈喽,我是子牙,一个很卷的硬核男人。深入研究计算机底层、Windows内核、Linux内核、Hotspot源码……聚焦做那些大家想学没地方学的课程 今天的互联网江湖,受大环境影响,已经不似前些年那般朝气蓬勃,裁员严重&#xff…

C#简单使用Yolov5的Onnx格式模型进行目标检测

背景 最近要离职了,同事需要了解一下C#如何使用yolov5系列onnx格式模型进行目标检测,由于其对C#不熟练,可能会影响公司后续的开发进度,所以趁着还在,赶紧把手尾搞好。 方案 1、创建一个C# DotNet 8 控制台项目[可千…