一学就废|Python基础碎片,文件读写

        文件处理是指通过编程接口对文件执行诸如创建、打开、读取、写入和关闭等操作的过程。它涉及管理程序与存储设备上的文件系统之间的数据流,确保数据得到安全高效的处理。

Python 中的文件模式

        打开文件时,我们必须指定我们想要的模式,该模式指定我们想要对文件做什么。不同模式的说明如下:

模式说明
r读取模式。打开一个文件用于读取。文件必须存在。
w写入模式。打开文件以进行写入。如果文件不存在则创建新文件,如果文件已存在则截断文件。
a追加模式。打开文件以追加内容。如果文件不存在则创建一个新文件。
b二进制模式。以二进制模式打开文件。
t文本模式。以文本模式打开文件。默认模式。
x独家创建模式。创建一个新文件,如果文件已存在则失败。
r+读写模式。打开一个文件以进行读取和写入。文件必须存在。
w+写和读模式。打开文件以进行写入和读取。如果文件不存在则创建新文件,如果文件存在则截断文件。
a+追加和读取模式。打开文件以追加和读取内容。如果文件不存在,则创建一个新文件。

我们使用的文本文件内容如下:

中华人民共和国
文件内容读取
python学习

在 Python 中打开文件

        打开文件,我们可以使用 open()函数,它需要文件路径和模式作为参数:

# Open the file and read its contents
with open('test.txt', 'r') as file:

读取文件

        读取文件可以通过 file.read()来实现,它读取文件的全部内容。读取文件后,我们可以使用 file. off()关闭文件,它在读取文件后关闭文件,这是释放系统资源所必需的。

        以只读模式(r)读取文件。

file = open("test.txt", "r")
content = file.read()
print(content)
file.close()

中华人民共和国
文件内容读取
python学习

        以二进制模式(rb)读取文件

file = open("geeks.txt", "rb")
content = file.read()
print(content)
file.close()

b'\xd6\xd0\xbb\xaa\xc8\xcb\xc3\xf1\xb9\xb2\xba\xcd\xb9\xfa\r\n\xce\xc4\xbc\xfe\xc4\xda\xc8\xdd\xb6\xc1\xc8\xa1\r\npython\xd1\xa7\xcf\xb0'

逐行读取

        我们可能希望逐行读取文件,尤其是对于一次读取整个内容并不实用的大文件。它通过以下两种方法完成:

  1. for line in file:遍历文件中的每一行。
  2. line.strip():删除任何前导或尾随空格,包括换行符。
# Open the file in read mode
file = open("test.txt", "r")
# Read each line one by one
for line in file:
    print(line.strip())  # .strip() to remove newline characters
# Close the file
file.close()

        也可以使用file. readline() 一次读取一行。

# Open the file in read mode
file = open("test.txt", "r")
# Read the first line
line = file.readline()
while line:
    print(line.strip())
    line = file.readline()  # Read the next line
# Close the file
file.close()

读取 CSV 文件

        读取 CSV(逗号分隔值)文件是处理表格数据的常见任务。Python 的 csv 模块使读取 CSV 文件变得容易。

import csv

# Open the CSV file
with open("test.csv", newline='') as csvfile:
    # Create a CSV reader object
    csvreader = csv.reader(csvfile)
    # Read and print each row
    for row in csvreader:
        print(row)

读取 JSON 文件

        读取 JSON(JavaScript Object Notation)文件广泛用于数据交换。Python 的 json 模块提供了读取 JSON 文件的方法。

import json

# Open the JSON file
with open("test.json", "r") as jsonfile:
    # Load the JSON data
    data = json.load(jsonfile)
    # Print the data
    print(data)

写入文件

        写入文件是使用 file. write()完成的,它将指定的字符串写入文件。如果文件存在,则删除其内容。如果它不存在,则创建一个新文件。

        以写入模式(w)写入文件

file = open("write_test.txt", "w")
file.write("Hello, World!")
file.close()

         以追加模式(a)写入文件。

# Python code to illustrate append() mode
file = open('write_test.txt', 'a')
file.write("This will add this line")
file.close()

关闭文件

        关闭文件对于确保正确释放文件使用的所有资源至关重要。file. off()方法关闭文件并确保保存对文件所做的任何更改。

file = open("test.txt", "r")
# Perform file operations
file.close()

使用with句式

        with 语句用于资源管理。它确保文件在其套件完成后正确关闭,即使出现异常。使用 open()as 方法会在退出代码块后自动处理关闭文件,即使发生错误。这降低了文件损坏和资源泄漏的风险。

with open("test.txt", "r") as file:
    content = file.read()
    print(content)

关闭文件时处理异常

        处理异常很重要,这样可以确保即使在文件操作过程中发生错误,文件也能被正确关闭。

try:
    file = open("test.txt", "r")
    content = file.read()
    print(content)
finally:
    file.close()

Python 中文件处理的优势

  • 多功能性:Python 中的文件处理允许我们执行广泛的操作,例如创建、读取、写入、附加、重命名和删除文件。
  • 灵活性:Python 中的文件处理非常灵活,因为它允许我们处理不同的文件类型(例如文本文件、二进制文件、CSV 文件等),并对文件执行不同的操作(例如读取、写入、附加等)。
  • 用户友好:Python 为文件处理提供了用户友好的界面,使创建、读取和操作文件变得容易。
  • 跨平台:Python 文件处理功能可跨不同平台(例如 Windows、Mac、Linux)工作,允许无缝集成和兼容性。

Python 中文件处理的缺点

  • 容易出错:Python 中的文件处理操作可能容易出错,特别是如果代码编写不仔细或文件系统存在问题(例如文件权限、文件锁等)。
  • 安全风险:Python 中的文件处理也可能带来安全风险,特别是如果程序接受可用于访问或修改系统上敏感文件的用户输入。
  • 复杂性:Python 中的文件处理可能很复杂,尤其是在使用更高级的文件格式或操作时。必须仔细注意代码,以确保正确安全地处理文件。
  • 性能:Python 中的文件处理操作可能比其他编程语言慢,尤其是在处理大文件或执行复杂操作时。

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

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

相关文章

牛客网刷题 ——C语言初阶(6指针)——倒置字符串

1. 题目描述:倒置字符串 牛客网OJ题链接 描述 将一句话的单词进行倒置,标点不倒置。比如 I like beijing. 经过函数后变为:beijing. like I 输入描述: 每个测试输入包含1个测试用例: I like beijing. 输入用例长度不超…

YOLOv10改进,YOLOv10自研检测头融合HyCTAS的Self_Attention自注意力机制+添加小目标检测层(四头检测)+CA注意机制,全网首发

摘要 论文提出了一种新的搜索框架,名为 HyCTAS,用于在给定任务中自动搜索高效的神经网络架构。HyCTAS框架结合了高分辨率表示和自注意力机制,通过多目标优化搜索,找到了一种在性能和计算效率之间的平衡。 理论介绍 自注意力(Self-Attention)机制是HyCTAS框架中的一个重…

Web前端界面开发

前沿:介绍自适应和响应式布局 自适应布局:-----针对页面1个像素的变换而变化 就是我们上一个练习的效果 我们的页面效果,随着我们的屏幕大小而发生适配的效果(类似等比例) 如:rem适配 和 vw/vh适配 …

机器学习05-最小二乘法VS梯度求解

机器学习05-最小二乘法VS梯度求解 文章目录 机器学习05-最小二乘法VS梯度求解0-核心知识点梳理1-最小二乘法和梯度求解算法什么关系最小二乘法梯度求解算法两者的关系 2-最小二乘法可以求解非线性回归吗3-最小二乘法不使用梯度求解算法,给出一个简单的示例&#xff…

maven的简单介绍

目录 1、maven简介2、maven 的主要特点3、maven的下载与安装4、修改配置文件5、私服(拓展) 1、maven简介 Maven 是一个广泛使用的项目管理和构建工具,主要应用于 Java 项目。Maven 由 Apache 软件基金会开发和维护,它提供了一种简洁且一致的方法来构建、…

C++ 基础思维导图(三)异常-STL

1、异常 异常举例 BankAccount.h #ifndef BANK_ACCOUNT_H #define BANK_ACCOUNT_H#include <iostream> #include <stdexcept>class InsufficientFundsException : public std::runtime_error { public:InsufficientFundsException() : std::runtime_error("I…

【C++入门】详解(中)

目录 &#x1f495;1.函数的重载 &#x1f495;2.引用的定义 &#x1f495;3.引用的一些常见问题 &#x1f495;4.引用——权限的放大/缩小/平移 &#x1f495;5. 不存在的空引用 &#x1f495;6.引用作为函数参数的速度之快&#xff08;代码体现&#xff09; &#x1f4…

人工智能之数学基础:函数间隔和几何间隔

本文重点 在机器学习领域,尤其是支持向量机(SVM)算法中,函数间隔(Functional Margin)和几何间隔(Geometric Margin)是两个至关重要的概念。它们不仅用于描述数据点到超平面的距离,还直接影响到分类器的性能与泛化能力。本文将详细介绍这两个概念,并探讨它们之间的区…

UE5 打包项目

UE5 打包项目 flyfish 通过 “文件”->“打开项目”&#xff0c;然后在弹出的对话框中选择项目文件&#xff08;通常是以.uproject为后缀的文件&#xff09; 选择目标平台&#xff1a; 在 UE5 主界面中&#xff0c;找到 “平台”&#xff08;Platforms&#xff09;。根据…

.NET framework、Core和Standard都是什么?

对于这些概念一直没有深入去理解&#xff0c;以至于经过.net这几年的发展进化&#xff0c;概念越来越多&#xff0c;越来越梳理不容易理解了。内心深处存在思想上的懒惰&#xff0c;以为自己专注于Unity开发就好&#xff0c;这些并不属于核心范畴&#xff0c;所以对这些概念总是…

《python》——jieba库

jieba库 jieba简介 jieba 是一个非常受欢迎的中文分词库 中文分词&#xff1a;这是 jieba 库最主要的功能。它能够将一段中文文本按照词语进行切分。例如&#xff0c;对于句子 “我爱自然语言处理”&#xff0c;jieba 分词后可以得到 [“我”, “爱”, “自然语言”, “处理”…

实训云上搭建集群

文章目录 1. 登录实训云1.1 实训云网址1.2 登录实训云 2. 创建网络2.1 网络概述2.2 创建步骤 3. 创建路由器3.1 路由器名称3.1 创建路由器3.3 查看网络拓扑 4. 连接子网5. 创建虚拟网卡5.1 创建原因5.2 查看端口5.3 创建虚拟网卡 6. 管理安全组规则6.1 为什么要管理安全组规则6…

python-42-使用selenium-wire爬取微信公众号下的所有文章列表

文章目录 1 seleniumwire1.1 selenium-wire简介1.2 获取请求和响应信息2 操作2.1 自动获取token和cookie和agent2.3 获取所有清单3 异常解决3.1 请求url失败的问题3.2 访问链接不安全的问题4 参考附录1 seleniumwire Selenium WebDriver本身并不直接提供获取HTTP请求头(header…

【理论】测试框架体系TDD、BDD、ATDD、MBT、DDT介绍

一、测试框架是什么 测试框架是一组用于创建和设计测试用例的指南或规则。框架由旨在帮助 QA 专业人员更有效地测试的实践和工具的组合组成。 这些指南可能包括编码标准、测试数据处理方法、对象存储库、存储测试结果的过程或有关如何访问外部资源的信息。 A testing framewo…

详细全面讲解C++中重载、隐藏、覆盖的区别

文章目录 总结1、重载示例代码特点1. 模板函数和非模板函数重载2. 重载示例与调用规则示例代码调用规则解释3. 特殊情况与注意事项二义性问题 函数特化与重载的交互 2. 函数隐藏&#xff08;Function Hiding&#xff09;概念示例代码特点 3. 函数覆盖&#xff08;重写&#xff…

计算机系统组成(计算机组成原理 基础)

文章目录&#xff1a; 一&#xff1a;体系结构 1.系统组成 1.1 硬件系统 1.2 软件系统 2.工作原理 2.1 冯诺依曼体系 2.2 指令和指令系统 3.性能指标 二&#xff1a;硬件系统 1.主机 1.1 CPU 1.2 内存 2.外设 2.1 外存 2.2 输入设备 2.3 输出设备 2.4 适配器 …

STM32 : 波特率发生器

波特率发生器 1. 发送器和接收器的波特率 波特率寄存器 (BRR): 在串行通信中&#xff0c;发送器和接收器的波特率是由波特率寄存器&#xff08;BRR&#xff09;中的一个值 DIV 来确定的。 2. 计算公式 计算公式: 详细解释 1. 波特率寄存器 (BRR) BRR: 波特率寄存器是一…

全新市场阶段, Plume 生态不断壮大的 RWAfi 版图

加密市场在 2024 年迎来了新的里程碑。BTC 不仅成功推出 ETF&#xff0c;以 BTC 为代表的主流加密货币还在一系列传统金融机构的推动下逐步与主流金融市场接轨。与此同时&#xff0c;随着特朗普成功当选下一任美国总统&#xff0c;他承诺推出一系列友好的加密政策&#xff0c;并…

MySQL的小问题

编码问题 不管官方使用什么编码&#xff1a;latin1、gbk、utf8、utfmb4。统一使用utfmb4 MySQL中的utf8并不是utf-8&#xff0c;它省略了一个字节&#xff0c;只是用三个字节存储所有的符号&#xff0c;utfmb4才是utf-8 远程登录问题&#xff1a; MySQL官方默认没有启动远程…

单片机(MCU)-简单认识

简介&#xff1a; 内部集成了CPU&#xff0c;RAM&#xff0c;ROM&#xff0c;定时器&#xff0c;中断系统&#xff0c;通讯接口等一系列电脑的常用硬件功能。 单片机的任务是信息采集&#xff08;依靠传感器&#xff09;&#xff0c;处理&#xff08;依靠CPU&#xff09;&…