当前位置: 首页 > news >正文

Python基础(十八、文件操作读取)

文章目录

  • 一、open方法
  • 二、read和readlines方法
  • 三、readline方法
  • 四、关闭操作
  • 五、with open语句
  • 总结

一、open方法

Python 中可以使用 open 方法来打开一个文件,该方法会返回一个文件对象。open 方法的语法如下:

file_object = open(file_name, mode)

其中,file_name 是要打开的文件路径(可以是相对路径或绝对路径),mode 是打开文件的模式,包括以下几种:

  • ‘r’:只读模式,打开文件后只能读取文件内容,不能修改文件。
  • ‘w’:写入模式,打开文件后可以写入文件内容,如果文件不存在,则创建新文件;如果文件已存在,则清空文件内容。
  • ‘a’:追加模式,打开文件后可以在文件末尾追加内容,如果文件不存在,则创建新文件。
  • ‘x’:独占模式,创建新文件并打开,如果文件已存在,则抛出 FileExistsError 异常。
    例如,如果要以只读模式打开一个名为 data.txt 的文件,可以使用以下代码:
file_object = open('data.txt', 'r',encoding="UTF-8")

二、read和readlines方法

打开文件后,可以使用 read 和 readlines 方法来读取文件内容。

read 方法:读取整个文件内容,并返回一个字符串。如果不指定参数,则默认读取整个文件内容;如果指定参数,则读取指定长度的内容。

# 读取整个文件内容
file_object = open('data.txt', 'r')
content = file_object.read()
file_object.close()# 读取指定长度的内容
file_object = open('data.txt', 'r')
content = file_object.read(10)
file_object.close()

readlines 方法:按行读取文件内容,并返回一个字符串列表。

file_object = open('data.txt', 'r')
lines = file_object.readlines()
file_object.close()

三、readline方法

除了 read 和 readlines 方法,还可以使用 readline 方法来逐行读取文件内容。

file_object = open('data.txt', 'r')
line1 = file_object.readline()  # 读取第一行内容
line2 = file_object.readline()  # 读取第二行内容
file_object.close()

四、关闭操作

在打开文件后,需要使用 close 方法来关闭文件对象,以释放系统资源。例如:

file_object = open('data.txt', 'r')
# 操作文件
file_object.close()

五、with open语句

除了手动关闭文件对象,还可以使用 with…open 语句来自动关闭文件对象。with 语句会在代码块执行结束后自动关闭文件对象,无需手动调用 close 方法。

with open('data.txt', 'r') as file_object:# 操作文件

下面是一个完整的例子,演示了如何打开文件、读取文件内容并关闭文件对象:

# 打开文件
file_object = open('data.txt', 'r')# 读取文件内容
lines = file_object.readlines()
for line in lines:print(line.strip())# 关闭文件
file_object.close()

总结

  • 文件路径的表示方式:可以使用相对路径或绝对路径来表示文件路径。相对路径是相对于当前工作目录的路径;而绝对路径是从根目录开始的完整路径。在 Windows 系统中,文件路径使用反斜杠 \ 来分隔目录,但是在 Python 中,需要使用正斜杠 / 或双反斜杠 \ 来表示文件路径。

  • 文件的打开模式:在打开文件时,可以指定文件的打开模式。常见的模式包括只读模式(‘r’)、写入模式(‘w’)、追加模式(‘a’)等。在打开文件时,需要确保文件不存在时不要使用只读模式,否则会抛出异常。

  • 文件对象的关闭:使用 open 方法打开文件后,需要使用 close 方法来关闭文件对象,以释放系统资源。如果忘记关闭文件对象,会导致资源泄露和程序崩溃等问题。为了避免这种问题,建议使用 with…open 语句,在代码块执行结束后自动关闭文件对象。

  • 文件内容的读取方式:可以使用 read、readline 和 readlines 方法来读取文件内容。read 方法会一次性读取文件的全部内容,适用于文件比较小的情况;readline 方法会逐行读取文件内容,适用于处理大型文件;readlines 方法会将文件的所有行读取到一个列表中,适用于需要对文件内容进行多次操作的情况。注意:同一个方法未关闭文件时,多次使用readline、read、readlines方法时,读取的内容是衔接上次读取的位置继续读取的。

  • 文件编码格式的问题:在读取文件时,需要指定正确的编码格式。否则会导致解码错误和乱码等问题。常见的编码格式包括 UTF-8、GBK、GB2312 等。如果不确定文件的编码格式,可以尝试使用 chardet 模块自动检测文件编码格式。

总结一下,Python 操作文件需要注意路径、打开模式、文件对象的关闭、文件内容的读取方式以及文件编码格式的问题。如果能够理解这些问题,并且正确使用相关的方法和技巧,就可以更加轻松地完成文件操作。

相关文章:

Python基础(十八、文件操作读取)

文章目录 一、open方法二、read和readlines方法三、readline方法四、关闭操作五、with open语句总结 一、open方法 Python 中可以使用 open 方法来打开一个文件,该方法会返回一个文件对象。open 方法的语法如下: file_object open(file_name, mode)其…...

Mac 16g约等于Windows多少g?

Mac 16g 内存等于 Windows 320g 内存 何为“黄金内存”? Mac 的内存是用黄金做的,而 Windows 的内存是用铁做的。 黄金的密度是 19.32 g/cm,而铁的密度是 7.874 g/cm。 因此,16g 的黄金体积是 0.082 cm,而 16g 的铁…...

快麦ERP退货借助APPlink快速同步CRM

什么是APPlink? APPlink是RestCloud打造的一款简单易用的零代码自动化集成平台,为业务流程提供自动化的解决方案,将企业内部的核心系统以及第三方应用程序和云服务等进行集成。无论是开发人员还是业务人员,都可以使用APPlink轻松…...

springMVC获取请求参数的方式

文章目录 springmvc获取参数的方式1、ServletAPI获取参数(原生态)2、通过控制器的形参取值3、 RequestParam4、通过POJO获取请求参数 springmvc获取参数的方式 1、ServletAPI获取参数(原生态) 将HttpServletRequest作为控制器方…...

android常用方法

获取应用安装来源 private String getAppInstaller(Context context, String packageName) {return context.getPackageManager().getInstallerPackageName(packageName);}判断是否系统应用 在/system/app 或者 /system/priv-app目录下的应用。 public boolean isSystem(Conte…...

Linux内核--网络协议栈(一)Socket通信原理和实例讲解

目录 一、引言 二、Socket ------>2.1、socket编程 ------>2.2、Socket的创建 三、收发数据 四、断开连接 五、删除套接字 六、网络 IO 一、引言 本章开始进入linux内核中网络部分的学习,先简单介绍一下socket套接字 二、Socket 一个数据包经由应用程序产生…...

Spring事务(2):声明式事务管理案例-转账(xml、注解)

1 编写转账案例,引出事务管理问题 需求:账号转账,Tom账号取出1000元,存放到Jack账号上 1.1 建表脚本(MySQL) CREATE TABLE t_account (id INT(11) NOT NULL AUTO_INCREMENT,name VARCHAR(20) NOT NULL,m…...

NACHI机器人模拟示教器如何切换中文

前言 现在开始学习机器人的编程语言,那么要学习会用首先得用模拟示教器来学习,但是全是英文确实比较难受一些些,没有中文来的直观。所以摸透一下如何给示教器更换语言。 具体步骤 步骤一:将中文的汉化包下载下来。具体的下载链…...

用通俗易懂的方式讲解:使用 Mistral-7B 和 Langchain 搭建基于PDF文件的聊天机器人

在本文中,使用LangChain、HuggingFaceEmbeddings和HuggingFace的Mistral-7B LLM创建一个简单的Python程序,可以从任何pdf文件中回答问题。 一、LangChain简介 LangChain是一个在语言模型之上开发上下文感知应用程序的框架。LangChain使用带prompt和few…...

综合智慧能源监测管理平台,实现能源管理“透明”化

能源问题是全球面临的最大问题,在提高经济增长的同时,也引发了能源供应危机及环境严重等问题,降低能源管理、低碳环保是我们未来发展的必经之路。 为了解决这一问题,智慧能源管理平台应运而生。平台采用微服务架构,整…...

【大数据进阶第三阶段之Datax学习笔记】使用阿里云开源离线同步工具DataX 实现数据同步

【大数据进阶第三阶段之Datax学习笔记】阿里云开源离线同步工具Datax概述 【大数据进阶第三阶段之Datax学习笔记】阿里云开源离线同步工具Datax快速入门 【大数据进阶第三阶段之Datax学习笔记】阿里云开源离线同步工具Datax类图 【大数据进阶第三阶段之Datax学习笔记】使用…...

kotlin chunked 和 windowed

kotlin chunked的作用 将集合按照指定的数量分割成多个结合 val numbers listOf(0,1,2,3,4,5,6,7,8,9) //把集合按照一个结合3个元素分割 Log.d("chunked", numbers.chunked(3).toString()) // 打印结果 [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9]] kotlin windowed…...

C语言光速入门笔记

C语言是一门面向过程的编译型语言,它的运行速度极快,仅次于汇编语言。C语言是计算机产业的核心语言,操作系统、硬件驱动、关键组件、数据库等都离不开C语言;不学习C语言,就不能了解计算机底层。 目录 C语言介绍C语言特…...

Flutter+Go_Router+Fluent_Ui仿阿里网盘桌面软件开发跨平台实战-买就送仿小米app开发

Flutter是谷歌公司开发的一款开源、免费的UI框架,可以让我们快速的在Android和iOS上构建高质量App。它最大的特点就是跨平台、以及高性能。 目前 Flutter 已经支持 iOS、Android、Web、Windows、macOS、Linux 的跨平台开发。 Flutter官方介绍,目前Flutte…...

内联函数的作用

目的 主要为了提升程序运行速度。 分析 当程序调用一个函数时,程序暂停执行当前指令,跳到函数体处执行,在函数执行完后,返回原来的位置继续执行。如果该函数为内联函数,则不需跳,是因为该内联函数直接插…...

Simpy简介:python仿真模拟库-02/5

一、说明 关于python下的仿真库,本篇为第二部分,是更进一步的物理模型讲解,由于这部分内容强依赖于第一部分的符号介绍,因此,有以下建议: 此文为第二部分,若看第一部分。建议查看本系列的第一部…...

Kafka高级应用:如何配置处理MQ百万级消息队列?

在大数据时代,Apache Kafka作为一款高性能的分布式消息队列系统,广泛应用于处理大规模数据流。本文将深入探讨在Kafka环境中处理百万级消息队列的高级应用技巧。 本文,已收录于,我的技术网站 ddkk.com,有大厂完整面经…...

LIN总线学习笔记(1)-总线传输规范

关注菲益科公众号—>对话窗口发送 “CANoe ”或“INCA”,即可获得canoe入门到精通电子书和INCA软件安装包(不带授权码)下载地址。 接触LIN是从最近负责项目中开始的。项目已经快要量产了,因为中间遇到的大大小小的问题&#xf…...

Qt界面篇:Qt停靠控件QDockWidget、树控件QTreeWidget及属性控件QtTreePropertyBrowser的使用

1、功能介绍 本篇主要使用Qt停靠控件QDockWidget、树控件QTreeWidget及Qt属性控件QtTreePropertyBrowser来搭建一个简单实用的主界面布局。效果如下所示。 2、控件使用详解 2.1 停靠控件QDockWidget QDockWidget可以停靠在 QMainWindow 内或作为桌面上的顶级窗口浮动。默认值…...

H266/VVC网络适配层概述

视频编码标准的分层结构 视频数据分层的必要性:网络类型的多样性、不同的应用场景对视频有不同的需求。 编码标准的分层结构:为了适应不同网络和应用需求,视频编码数据根据其内容特性被分成若干NAL单元(NAL Unit,NALU…...

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

XCTF-web-easyupload

试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes&#xff0…...

LLM基础1_语言模型如何处理文本

基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

回溯算法学习

一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别

【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势&#xf…...