【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中的文件处理功能,从而在实际项目中实现更高效和可靠的文件操作。

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

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

相关文章

poweroff, reboot流程

poweroff /halt /reboot操作通常由用户空间的systemd或其他初始化系统通过sys_reboot()系统调用触发 sys_reboot() 在内核中定义,通常位于kernel/reboot.c文件中。当传递特定的magic值如 LINUX_REBOOT_CMD_POWER_OFF时,内核会执行关机并尝试触发硬件层面…

HTTP-一

一、超文本传输 1. 文本传输 > 字符串(能在utf8/gbk等码表上找到合法字符) 2. 超文本传输 > 不仅仅是字符串,还可以携带一些图片,特殊得格式 HTML 3. 富文本 word http0.9 -> http1.0 -> http1.1 -> http2.0 -> http3.0 http1.0是主流版本 2.0 和…

TiDB学习8:TiDB6.0新特性

目录 1. Placement Rules in SQL 2. 热点小表缓存 3. 内存悲观锁 4. Top SQL 5.TiDB Enterprise Manager(TiEM) 6. 小结 1. Placement Rules in SQL Placement Rules in SQL 之前 跨地域部署的集群,无法本地访问无法根据业务隔离资源难以按照业务等级配置资源…

联合(union)和枚举(enum)学习(c语言)

前言 Hello,亲爱的小伙伴们,好久不见,今天我们继续来学习新的内容-----联合和枚举 如果喜欢作者菌的文章的话,就不要吝啬手中的三连呀,万分感谢!! 联合(共用体)(union&…

【荒原之梦考研数学】感谢 CSDN 的小伙伴们

自 2016 年在 CSDN 上开设账号至今,荒原之梦网获得了很多同学们的支持和肯定,以及意见或建议,荒原之梦网一路走来,是大家给予了我们不断前进的动力。 当前这个 CSDN 账号,是荒原之梦考研数学网目前在 CSDN 的第一个也…

哪些机构签发代码签名证书?

在数字化快速发展的今天,软件安全已成为全球关注的焦点。代码签名证书,作为一种数字证书,不仅保障了软件在传输过程中的安全性和可靠性,还为用户提供了信任的基石。本文将深入探讨代码签名证书颁发机构(CA)…

神经网络 torch.nn---Linear Layers(nn.Linear)

torch.nn - PyTorch中文文档 (pytorch-cn.readthedocs.io) torch.nn — PyTorch 2.3 documentation nn.Linear torch.nn.Linear(in_features, out_features, biasTrue, deviceNone, dtypeNone) 参数: in_features - 每个输入样本的大小out_features - 每个输出…

HarmonyOS(32) @Link标签使用指南

Link 前言Link简介State和Link的同步场景使用示例参考资料 前言 之前写过Link的使用,最新的API有点变化,在此做个记录。 Link简介 子组件中被Link装饰的变量与其父组件中对应的数据源建立双向数据绑定。。子组件变量发生变化,父组件也会随…

【干货】视频文件抽帧(opencv和ffmpeg方式对比)

1 废话不多说,直接上代码 opencv方式 import time import subprocess import cv2, os from math import ceildef extract_frames_opencv(video_path, output_folder, frame_rate1):"""使用 OpenCV 从视频中抽取每秒指定帧数的帧,并保存到指定文件夹…

开机弹窗找不到opencl.dll怎么办,教你几种有效的修复方法

在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是“找不到opencl.dll文件”。这个问题可能会影响到我们的正常使用,因此了解其原因和解决方法是非常必要的。本文将从多个方面对“找不到opencl.dll文件”这一问题进行详细分析和解…

socket网络编程——多进程、多线程处理并发

如下图所示, 当一个客户端与服务器建立连接以后,服务器端 accept()返回,进而准备循环接收客户端发过来的数据。 如果客户端暂时没发数据,服务端会在 recv()阻塞。此时,其他客户端向服务器发起连接后,由于服务器阻塞了,无法执行 accept()接受连接,也就是其他客户端发送…

关于main函数参数列表的那些事

写在最前面: 本篇博客所写代码,全部都依赖于Linux环境。 在开始之前,我们先问自己几个问题: main函数可以传参吗?如果main函数可以传参,最多可以传几个参数。main函数传递的参数具体作用是什么? 一.是否…

25-unittest执行顺序

在使用unittest框架时,各个测试方法的执行顺序是怎样的,本篇通过简单案例讲解unittest执行顺序。 一、定义测试类 import unittestclass Demo(unittest.TestCase):def setUp(self):print("start!")def tearDown(self):print("end!"…

大模型的跃进众生相

最近一段时间,在互联网科技圈,掀起了一阵大模型发布潮,许多大企业加码其中,甚至不少互联网大佬级人物也在其中全情投入,开启了人工智能创业浪潮。那么在这阵阵浪潮中,我们可以观察到什么样的“众生相”&…

unity中animation和animator在使用上的区别

Animation(动画),可直接存储在物体上的animation组件中 Animation 组件用于在对象上直接存储和播放动画数据。这些数据通常是通过关键帧动画(keyframe animation)制作的,其中包含了对象在不同时间点的变换…

IO进程线程(九)线程的同步 进程间通信

文章目录 一、 线程的同步(一)无名信号量sem1. 定义和初始化2.获取信号量3.释放信号量4. 销毁5. 使用示例 (二)条件变量1. 定义和初始化2. 获取条件变量3. 释放条件变量4. 销毁条件变量 二、进程间通信(一)…

二叉搜索树(BST,Binary Search Tree)

目录 前言 一、二叉搜索树概念 二、二叉搜索树的实现与操作 1.查找 2.插入 3.删除 4.中序遍历 5.完整代码 三、二叉搜索树的应用(K模型、KV模型) 1.K模型 2.KV模型 3.完整代码 四、二叉搜索树的性能分析 前言 为何学? 1.二叉…

OceanBase 内存研究(OceanBase 3.2.4.5)

内存结构 从官网的结构图可以看出,一台observer可使用的总内存(memory_limit)包括 系统内存(system_memory) 和 租户内存(sys租户与普通租户) 系统内存 系统内存system_memory 属于 observer 的内部内存,允许其它租户共享使用该内存资源 (root10.0.0.…

vue2转vue3初步下载pnpm遇到的问题 pnpm : 无法加载文件 D:\nodejs\pnpm.ps1

安装pnpm npm install -g pnpm pnpm -v 提示: 解决:nvm install 18.18.0 下载最稳定版本的nodejs nvm use 18.18.0 然后注意重新下载删除pnpm npm uninstall -g pnpm npm install -g pnpmlatest 在vscode使用pnpm报错 解决:管理员运行Windo…

爬虫(没)入门:用 node-crawler 爬取 blog

起因 前几天想给一个项目加 eslint,记得自己曾经在博客里写过相关内容,所以来搜索。但是发现 csdn 的只能按标题,没办法搜正文,所以我没搜到自己想要的内容。 没办法只能自己又重新折腾了一通 eslint,很烦躁。迁怒于…