【Python】教你彻底了解 Python中的文件处理

​​​​在这里插入图片描述

文章目录

    • 一、文件的打开与关闭
      • 1. 打开文件
      • 2. 关闭文件
      • 3. 文件模式
    • 二、文件的读写操作
      • 1. 读取文件内容
      • 2. 写入文件内容
    • 三、使用上下文管理器
    • 四、异常处理
    • 五、二进制文件操作
      • 1. 读取二进制文件
      • 2. 写入二进制文件
    • 六、实际应用示例
      • 1. 处理CSV文件
      • 2. 处理JSON文件
    • 结论

文件处理是编程中的基本操作之一,几乎所有的应用程序都需要与文件进行交互。Python提供了一套强大的文件处理功能,使得对文件的读写操作变得非常简单。本文将详细探讨Python中的文件处理机制,涵盖文件的打开与关闭、读写操作、文件模式、上下文管理器、异常处理、二进制文件操作,以及一些实际应用示例。

一、文件的打开与关闭

在Python中,可以使用内置的open()函数来打开文件,使用close()方法来关闭文件。

1. 打开文件

使用open()函数打开文件,该函数返回一个文件对象。

file = open("example.txt", "r")  # 打开文件用于读取

2. 关闭文件

使用close()方法关闭文件,以释放资源。

file.close()

3. 文件模式

open()函数接受两个参数:文件名和模式。常见的文件模式有:

  • "r":读取模式(默认模式)
  • "w":写入模式(会覆盖文件)
  • "a":追加模式
  • "b":二进制模式
  • "t":文本模式(默认模式)
  • "+":读写模式

例如:

file = open("example.txt", "w")  # 以写入模式打开文件
file.close()

二、文件的读写操作

文件对象提供了多种方法来读写文件内容。

1. 读取文件内容

  • read(size):读取指定大小的内容,如果不指定大小,读取整个文件。
  • readline():读取一行内容。
  • readlines():读取所有行并返回列表。
file = open("example.txt", "r")
content = file.read()  # 读取整个文件内容
print(content)
file.close()file = open("example.txt", "r")
line = file.readline()  # 读取一行内容
print(line)
file.close()file = open("example.txt", "r")
lines = file.readlines()  # 读取所有行
print(lines)
file.close()

2. 写入文件内容

  • write(content):写入指定内容。
  • writelines(lines):写入多行内容。
file = open("example.txt", "w")
file.write("Hello, World!\n")  # 写入内容
file.write("This is a test.\n")
file.close()file = open("example.txt", "w")
lines = ["First line.\n", "Second line.\n"]
file.writelines(lines)  # 写入多行内容
file.close()

三、使用上下文管理器

上下文管理器使用with语句来自动管理文件的打开和关闭,确保文件在操作完成后被正确关闭。

with open("example.txt", "r") as file:content = file.read()print(content)with open("example.txt", "w") as file:file.write("Hello, World!\n")file.write("This is a test.\n")

使用with语句的优点是即使在操作过程中发生异常,文件也会被自动关闭。

四、异常处理

在文件操作中,异常处理非常重要,可以使用try-except块来捕获和处理异常。

try:with open("example.txt", "r") as file:content = file.read()print(content)
except FileNotFoundError:print("Error: File not found")
except IOError:print("Error: Cannot read file")

五、二进制文件操作

对于二进制文件,可以使用"b"模式进行操作。例如,读取和写入图像文件或音频文件。

1. 读取二进制文件

with open("example.jpg", "rb") as file:data = file.read()print(data)

2. 写入二进制文件

with open("output.jpg", "wb") as file:file.write(data)

六、实际应用示例

以下是两个实际应用示例,演示如何使用Python中的文件处理功能来解决实际问题。

1. 处理CSV文件

以下示例展示了如何使用Python处理CSV文件,读取CSV文件内容并进行处理。

import csv# 读取CSV文件
with open("example.csv", "r") as csvfile:reader = csv.reader(csvfile)for row in reader:print(row)# 写入CSV文件
with open("output.csv", "w", newline='') as csvfile:writer = csv.writer(csvfile)writer.writerow(["Name", "Age", "City"])writer.writerow(["Alice", 30, "New York"])writer.writerow(["Bob", 25, "Los Angeles"])

2. 处理JSON文件

以下示例展示了如何使用Python处理JSON文件,读取和写入JSON文件内容。

import json# 读取JSON文件
with open("example.json", "r") as jsonfile:data = json.load(jsonfile)print(data)# 写入JSON文件
data = {"name": "Alice","age": 30,"city": "New York"
}with open("output.json", "w") as jsonfile:json.dump(data, jsonfile, indent=4)

结论

文件处理是编程中的基本操作,Python提供了一套强大的文件处理功能,使得对文件的读写操作变得非常简单。在本文中,我们详细探讨了Python中的文件处理机制,涵盖文件的打开与关闭、读写操作、文件模式、上下文管理器、异常处理、二进制文件操作,以及一些实际应用示例。希望这篇文章能帮助你更好地理解和应用Python中的文件处理功能,从而在实际项目中实现更高效和可靠的文件操作。

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

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

相关文章

kafka安装流程

安装kafka前需要安装zookeeper zookeeper安装教程 1.新建一个logs文件夹 2.修改配置文件 3.修改listeners参数 4.以管理员身份启动kafka服务 .\bin\windows\kafka-server-start.bat .\config\server.properties 如果报 输入行太长。 命令语法不正确。 解决方案如下&#x…

Java 【数据结构】 TreeSetTreeMap(二叉搜索树详解)【神装】

登神长阶 第八神装 TreeSet 第九神装 TreeMap 目录 💉 一.二叉搜索树 🩸1. 定义 💊2. 基本操作 🩹3. 插入操作 🩼4. 查找操作 🩺5. 删除操作* 🩻6. 遍历操作 🪒7.性能分析 …

引用(C++)和内联函数

前言&#xff1a;本文主要讲解C语法中引用如何使用和使用时的一些技巧 基本语法 引用就是取别名 #include <iostream> using namespace std; int main() {int a 10;int& b a;//给a取别名为bcout << a << endl;cout << b << endl;return 0…

MogoTemplate基本入门(Mongodb数据库基本增删改查)

nosql 因为没有标准的 sql&#xff0c;各有各的操作方式&#xff0c;所以学习成本比较高。实际应用也不会去命令行直接操作&#xff0c;而是用编程语言的 api。 所以我们可以简单了解一下Mongodb&#xff0c;然后用java的Api去操作就行了 没必要花很大功夫在命令行上操作执行…

【机器学习】GLM4-9B-Chat大模型/GLM-4V-9B多模态大模型概述、原理及推理实战

​​​​​​​ 目录 一、引言 二、模型简介 2.1 GLM4-9B 模型概述 2.2 GLM4-9B 模型架构 三、模型推理 3.1 GLM4-9B-Chat 语言模型 3.1.1 model.generate 3.1.2 model.chat 3.2 GLM-4V-9B 多模态模型 3.2.1 多模态模型概述 3.2.2 多模态模型实践 四、总结 一、引言…

parseInt函数

貌似遇到问题了&#xff0c;在Java中&#xff0c;parseInt方法是java.lang.Integer类的一个静态方法&#xff0c;它用来将字符串转换为基本数据类型int。如果字符串不能被解析为有效的整数&#xff0c;parseInt会抛出一个NumberFormatException。 原来是取整串转换&#xff0c;…

Vue随笔记

1 Idea里面使用Vue Idea里面要安装Vue插件 File - New - Project - JavaScript - Vue.js 然后出现&#xff1a; "C:\Program Files\nodejs\node.exe" "C:\Program Files\nodejs\node_modules\npm\bin\npx-cli.js" --ignore-existing --package vue/cli…

Keil中for(int i=0;;)报错

一、报错 二、报错原因 定义变量i报错 这是C的写法&#xff0c;C语言不支持 用C语言格式应该为 int i0; for(int i;;;) {} c99支持第一种写法&#xff0c;如果使用gcc&#xff0c;可以指定c99模式。 三、指定c99模式

cv2.imwrite路径中存在中文时出现乱码问题

cv2.imwrite(path, img) 在写入包含中文的路径的时候&#xff0c;保存的文件名称为乱码。 解决办法&#xff1a; cv2.imwrite(path,image)将上面的代码修改为以下代码&#xff0c;可以避免出现中文乱码。 cv2.imencode(.jpg, image)[1].tofile(path)

搜索与图论:图中点的层次

搜索与图论&#xff1a;图中点的层次 题目描述参考代码 题目描述 输入样例 4 5 1 2 2 3 3 4 1 3 1 4输出样例 1参考代码 #include <cstring> #include <iostream> #include <algorithm>using namespace std;const int N 100010;int n, m; int h[N], e[N]…

【Linux网络】传输层协议 - UDP

文章目录 一、传输层&#xff08;运输层&#xff09;运输层的特点复用和分用再谈端口号端口号范围划分认识知名端口号&#xff08;Well-Know Port Number&#xff09;两个问题① 一个进程是否可以绑定多个端口号&#xff1f;② 一个端口号是否可以被多个进程绑定&#xff1f; n…

德国西门子论未来质量管理 - 如何与明天相遇?

未来制造业的质量 -- 如何用软件方案满足质量要求 作者&#xff1a;Bill Butcher 翻译&编辑&#xff1a;数字化营销工兵 【前言】在Frost&Sullivan最近发表的一份白皮书中&#xff0c;他们讨论了制造业的质量投资。质量是制造过程的关键要素&#xff0c;但似乎比其他…

【贡献度分析(帕累托图)】

文章目录 前言一、贡献度分析是什么&#xff1f;二、使用步骤1. 准备数据2. 排序数据3. 绘制帕累托图4. 分析结果5. 实际应用 三、示例代码 前言 贡献度分析也称为帕累托分析。它可以帮助我们理解数据集中各个因素对整体影响的程度&#xff0c;从而优先处理最重要的因素&#…

oracle数据库通过impdp导入数据时提示,ORA-31684:对象类型用户xxx已存在,和ORA-39151:表xxx存在的解决办法

前提条件&#xff1a;首先备份原数据库中此用户对应的schemas 比如名为cams_wf的schemas 以便出了问题后还可以恢复原数据。 解决办法一、 通过命令或者数据库管理工具删除掉此schemas下的所有表&#xff0c;然后在impdp中加入ignorey 来忽略ORA-31684&#xff1a;对象类型用…

Python logging 模块详解

Python 的 logging 模块提供了一个强大而灵活的日志系统。它是 Python 标准库的一部分&#xff0c;因此可以在任何 Python 程序中使用。logging 模块提供了许多有用的功能&#xff0c;包括日志消息的级别设置、日志消息的格式设置、将日志消息输出到不同的目标&#xff0c;以及…

UE5刷植物悬空了

UE5系列文章目录 文章目录 UE5系列文章目录前言一、解决办法 前言 在Unreal Engine5.3中使用植物模式刷各种植物时&#xff0c;有时会发现有的植物要么悬空&#xff0c;要不有刷不上地板的情况。而且悬空的植物还不能接触到地面&#xff0c;感觉很奇怪&#xff0c;就像下图所示…

mmdetection的生物图像实例分割三:自定义数据集的测试与分析

mmdetection的生物图像实例分割全流程记录 第三章 自定义数据集的测试、重建与分析 文章目录 mmdetection的生物图像实例分割全流程记录前言一、测试集的推理1.模型测试2.测试数据解析 二、测试结果的数据整合三、生物结构的重建效果 前言 mmdetection是一个比较容易入门且上…

【研发日记】Matlab/Simulink软件优化(二)——通信负载柔性均衡算法

文章目录 前言 背景介绍 初始代码 优化代码 分析和应用 总结 前言 见《【研发日记】Matlab/Simulink软件优化(一)——动态内存负荷压缩》 背景介绍 在一个嵌入式软件开发项目中&#xff0c;需要设计一个ECU节点的CAN网路数据发送&#xff0c;需求是在500k的通信波特率上&a…

机器人舵机:关键要素解析与选择指南

在机器人技术日新月异的今天&#xff0c;舵机作为机器人的核心部件之一&#xff0c;扮演着至关重要的角色。它的性能直接关系到机器人的运动控制、稳定性以及精度等方面。那么&#xff0c;在选择和使用机器人舵机时&#xff0c;我们需要关注哪些关键要素呢&#xff1f;本文将为…

使用Vue.js将form表单传递到后端

一.form表单 <form submit.prevent"submitForm"></form> form表单像这样写出来&#xff0c;然后把需要用户填写的内容写在form表单内。 二.表单内数据绑定 <div class"input-container"><div style"margin-left: 9px;"&…