【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…

Linux系统下玩转Quickemu虚拟机管理工具

Linux系统下玩转Quickemu虚拟机管理工具 一、Quickemu介绍1.1 Quickemu简介1.2 Quickemu关键特性1.3 Quickemu特点1.4 Quickemu使用场景1.5 相关命令解释二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍三、检查本地环境3.1 检查本地操作系统版本3.2 检查系统内核版本四、环…

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去操作就行了 没必要花很大功夫在命令行上操作执行…

正则表达式三

运算符的优先级 相同优先级的从左到右计算&#xff0c;不同优先级&#xff0c;优先级高得先运算。从高到低为&#xff1a; 转义字符&#xff1a; 圆括号或方括号&#xff1a;(),[] 限定符&#xff1a;指限定前面元素的次数如&#xff1a;*&#xff0c;,?,{n},{n,},{n,m} 字符…

【机器学习】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)

前端 JS 经典:Reflect 本质

1. 什么是 Reflect Reflect 可以调用对象的基本方法&#xff08;内部方法&#xff09;&#xff0c;在 ES6 之前我们是没有任何方法去直接调用对象的基本方法的。只能间接调用&#xff0c;间接调用它又会给你做一些额外得事。 2. 对象的基本方法 什么是对象的基本方法呢&…

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

搜索与图论&#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]…

后端开发面经系列--360一面面经

360嵌入式开发一面面经 公众号&#xff1a;阿Q技术站 来源: https://www.nowcoder.com/feed/main/detail/22a2f509f0a94c3cbb8ba485de084d19 1、Wi-Fi关联是怎么做的了解过吗&#xff1f; 扫描可用网络&#xff1a; 设备会主动扫描附近的无线网络&#xff0c;以查找可用的Wi-…

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

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

常用STL标准模板库

1 容器&#xff08;Containers&#xff09; 1.1 序列式容器 1.1.1 vector 数组 1.1.2 string 字符串 1.1.3 list 列表 1.1.4 stack 栈 1.1.5 queue 队列 1.1.6 deque 双端队列 1.2 关联式容器 1.2.1 set / multiset 集合 / 多重集合 1.2.2 pair 对组 1.2.3 map / mu…

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

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

vllm 大模型量化微调推理使用: lora、gptq、awq

1)微调lora模型推理 docker run --gpus all -v /ai/Qwen1.5-7B-Chat:/qwen-7b -v /ai/lora:/lora -p 10860:10860 --

LiveData是如何感知Room数据变化的

一 Room数据变化LiveData如何收到onChanged回调的&#xff1f; 1.1 LiveData是如何创建的 这里讨论的LiveData的创建是特指Dao定义的方法的返回类型&#xff0c;而不是所有的LiveData。 以NoteDao 举例&#xff1a; Dao public interface NoteDao {Query("select * fr…

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

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