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

Python 从入门到实战28(文件的读操作)

        我们的目标是:通过这一套资料学习下来,通过熟练掌握python基础,然后结合经典实例、实践相结合,使我们完全掌握python,并做到独立完成项目开发的能力。

        上篇文章我们讨论了文件的打开、创建、关闭的相关知识。今天我们将学习一下文件的读的相关操作知识。

1、读取文件read()方法

在python中通过打开文件后就可以读取文件内容了。

读取指定字符方法方法: file.read(size)

file----为打开的文件对象

size---为可选参数,用于指定要读取的字符个数,若是省略则一次性读取所有内容。

注意:调用read()方法读取文件内容的前提是,打开文件时,打开模式r或者r+。

举例说明:读取文件"test_data.txt"

def main():
    with open("test_data.txt", "r") as test_data_file:
        test_data = test_data_file.read()  #读取文件中全部内容
        print(test_data)

输出参考:

xiaomi,123456

xiaohua,135790

xiaohui,246810

另外,举例读取一部分字符:

def main():
    with open("test_data.txt", "r") as test_data_file:
        test_data = test_data_file.read(13)  #读取前13个字符
        print(test_data)

输出结果:

xiaomi,123456

2、seek()指定光标位置

上面我们使用read()方法读取文件,读取文件都是从开头开始读取的。如果我们想从某一位置开始读取要怎么实现呢?可以使用seek()方法将文件的指针移动到新的位置处。然后在使用read(size)方法读取文件。

seek()语法: file.seek(offset, [, whence])

参数说明:offset----表示要移动的字节数,可以为正数、负数或零。

whence(可选)----表示移动文件指针的参考位置,默认值为0。有三种取值:0:表示从文件开头开始计算偏移量。1:表示从当前位置开始计算偏移量。2:表示从文件末尾开始计算偏移量。

举例说明:

def main():
    with open("test_data.txt", "r") as test_data_file:
        test_data_file.seek(7)    #索引也是从0开始,7指第8个字符开始
        test_data = test_data_file.read(6)  #从第8个字符读取6个字符,即读取密码
        print(test_data)

参考下面的文档内容,

输出结果:123456

举例读取最后一组数据:

                                                                                                                                               

def main():
    with open("test_data.txt", "r") as test_data_file:
        test_data_file.seek(-12,2)    #移动到文件末尾向前第12位置
        test_data = test_data_file.read(12)  #读取12个字符,即读取最后一组数据
        print(test_data)

执行报错了,因为以r模式打开只支持从文件头开始计算相对位置。以rb方式才支持从文件末尾计算。

修改后查看:

def main():
    with open("test_data.txt", "rb") as test_data_file:
        test_data_file.seek(-14,2)    #移动到文件末尾向前第14位置
        test_data = test_data_file.read(14)  #读取14个字符,即读取最后一组数据
        print(test_data)

输出参考:正确输出最后一行数据,

3、readline()读取一行

在使用read()方法读取文件时,如果文件很大,一次性读取全部内容到内存,容易造成内存不足。如何解决这个问题呢?可以通过读取一行数据。

使用语法:file.readline() 

同样需要注意,使用此方法也要打开模式是r(只读)或者r+(读写)。

举例说明,如我们读取上面test_data.txt 按行输出,并加上序号。

参考代码:

def main():
    with open("test_data.txt", "r+") as test_data_file: #打开文件
        sequence_no = 0
        while True:
            sequence_no = sequence_no+1   #作为序号输出
            line = test_data_file.readline()  #读取一行数据
            if line == "":             #读取到文件末尾退出循环,即退出读取文件
                break
            print(sequence_no,"\t"+ line)  #打印序号和一行内容

输出结果:

1     xiaomi,123456

2     xiaohua,135790

3     xiaohui,246810

4、读取全部行readlines()

使用readlines()可以读取全部文件内容,此方法返回值是一个字符串列表。

使用语法:file.readlines() 

同样需要注意,使用此方法也要打开模式是r(只读)或者r+(读写)。

举例说明,如我们读取上面test_data.txt

def main():
    with open("test_data.txt", "r+") as test_data_file:  # 打开文件
        test_data = test_data_file.readlines() #读取全部内容
        print(test_data)

输出结果:

['xiaomi,123456\n', 'xiaohua,135790\n', 'xiaohui,246810']

若是想一行行的输出,也可以循环打印:

def main():
    with open("test_data.txt", "r+") as test_data_file:  # 打开文件
        test_data = test_data_file.readlines() #读取全部内容
        for line in test_data:
            print(line)

输出结果参考:

5、读取csv文件

数据为my_data,在CSV文件中存储的。

内容如下:

读取csv方法:导入csv模块>reader()读取>输出信息查看

#coding = utf-8

import  csv  #导入csv
def main():
    user_file = csv.reader(open('my_data.csv', 'r'))  # 打开文档并读取
    for line in user_file:  #按行输出
        print(line)

执行后输出结果参考:

['zhangsan', '123456']

['wangwu', '257890']

['liuliu', '358147']

今天先写学习到这里了,每天进步一点点。明天也要加油啊!

相关文章:

Python 从入门到实战28(文件的读操作)

我们的目标是:通过这一套资料学习下来,通过熟练掌握python基础,然后结合经典实例、实践相结合,使我们完全掌握python,并做到独立完成项目开发的能力。 上篇文章我们讨论了文件的打开、创建、关闭的相关知识。今天我们将…...

[leetcode刷题]面试经典150题之7同构字符串(简单)

这个题虽然是简单题,但是看了半天还是没啥好思路,最后看了解题学到了不少知识点 1.index() 函数查找序列中首次出现的元素索引 2.zip函数:用于将可迭代的对象(如列表、元组、字典等)作为参数,将对象中对应…...

【Keil5教程及技巧】耗时一周精心整理万字全网最全Keil5(MDK-ARM)功能详细介绍【建议收藏-细细品尝】

💌 所属专栏:【单片机开发软件技巧】 😀 作  者: 于晓超 🚀 个人简介:嵌入式工程师,专注嵌入式领域基础和实战分享 ,欢迎咨询! 💖 欢迎大家&#xff1…...

【rust】 基于rust编写wasm,实现markdown转换为html文本

文章目录 背景转换预览核心代码前置依赖rustup换源cargo换源中科大 wasm-pack安装 背景 尝试用rust编写一款markdown转html的插件,通过wasm给html使用,不得不说体积挺小,约200K, 比go的wasm起步2MB看着舒服点。 不过go的配置和换…...

Java中的反向代理与负载均衡:Nginx与Java服务的集成

Java中的反向代理与负载均衡:Nginx与Java服务的集成 大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天我们来探讨一下Java应用中的反向代理与负载均衡,以及如何通过Ngin…...

高级java每日一道面试题-2024年9月26日-运维篇[分布式篇]-如何保证每个服务器的时间都是同步的?

如果有遗漏,评论区告诉我进行补充 面试官: 如何保证每个服务器的时间都是同步的? 我回答: 确保服务器之间的时间同步对于维护分布式系统的一致性、日志记录的准确性以及安全认证的有效性非常重要。以下是几种常见的方法来保证服务器时间同步: 1. 使用NTP&#…...

探索MemGPT:AI界的新宠儿

文章目录 探索MemGPT:AI界的新宠儿1. 背景介绍2. MemGPT是什么?3. 如何安装MemGPT?4. 简单的库函数使用方法5. 场景应用场景一:创建持久聊天机器人场景二:文档分析场景三:多会话聊天互动 6. 常见Bug及解决方…...

处理RabbitMQ连接和认证问题

在使用RabbitMQ进行消息队列管理时,我们可能会遇到各种连接和认证问题。本文将介绍如何诊断和解决这些问题,并通过使用RabbitMQ的管理端进行登录验证来确保配置正确。 1. 问题概述 在最近的一次部署中,我们遇到了两个主要问题: …...

FFmpeg中结构释放小函数

用于FFmpeg一些结构内存释放问题 #pragma once #include <iostream>extern "C" { #include "libavformat/avformat.h" #include "libavcodec/avcodec.h" #include "libavutil/avutil.h" #include "libavutil/frame.h"…...

C语言中的一些小知识(三)

一、你了解printf()吗&#xff1f; 你知道下面代码的输出结果吗&#xff1f; int a123; printf("%2d \n",a); printf() 函数是 C 语言中用于格式化输出的标准函数&#xff0c;它允许你将数据以特定的格式输出到标准输出设备&#xff08;通常是屏幕&#xff09;。p…...

编译win2k3中tools目录下i386mk.inc文件的作用

编译win2k3中tools目录下i386mk.inc文件的作用 在Windows Driver Kit&#xff08;WDK&#xff09;的根安装目录下&#xff0c;这些文件存储在bin子目录中。 在这些文件中&#xff0c;有特定于该目标的优化规则或汇编指令。可能还需要额外的链接标志、资源编译器标志或C预处理器…...

IPSec隧道协议学习(一)

前情回顾 前面介绍的GRE隧道协议&#xff0c;可以字LAN之间通过Internet建立隧道&#xff0c;实现网络间资源共享&#xff0c;但是GRE隧道协议不能实现加密功能&#xff0c;传输的数据不受加密保护&#xff0c;为了实现在隧道间传输数据包收到加密保护&#xff0c;需要使用IPS…...

计网作业3

1.交换机是依据 MAC地址 来转发数据包的 2.数据链路层 负责将数据封装成帧&#xff0c;在相邻节点间进行传输 数据链路层负责以下任务&#xff1a; 封装数据 物理地址寻址&#xff1a;使用MAC地址进行寻址&#xff0c;确保数据能够在局域网中正确传输到目标节点 介质访问控…...

什么是注入攻击???

在 Java 中&#xff0c;注入攻击是一种利用程序中的安全漏洞来执行恶意代码或获取未经授权的数据的攻击方式。 相关面试题&#xff1a; #{} 和 ${} 的区别是什么&#xff1f; ${}是 Properties 文件中的变量占位符&#xff0c;它可以用于标签属性值和 sql 内部&#xff0c;属…...

牛客小白月赛101(A~E)

文章目录 写在前面A tb的区间问题思路code B tb的字符串问题思路code C tb的路径问题思路code D tb的平方问题思路code E tb的数数问题思路code 牛客小白月赛101 写在前面 最近几天没怎么刷题&#xff0c;昨天晚上打的这场牛客月赛打的很烂&#xff0c;隔几天不刷题感觉自己的…...

MFC设置特定控件字体大小和背景颜色

MFC设置特定控件字体大小和背景颜色 初始化函数里 m_editFont.CreatePointFont(580 , _T("宋体"));m_ctrlEdit.SetFont(&m_editFont);重写消息 HBRUSH CMFCTESTDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) {HBRUSH hbr CDialogEx::OnCtlColor(pDC,…...

专题八_链表_算法专题详细总结

目录 链表 1.常用技巧 1&#xff09;画图&#xff01;&#xff01;&#xff01; -> 直观 形象 便于我们理解 2&#xff09;引入虚拟“头”节点 1.便于处理边界条件 2.方便我们对链表进行操作 3.不要吝啬空间&#xff0c;大胆定义变量 4.快慢双指针 1.判断链表是否…...

Vue3使用vue-quill富文本编辑器实现图片大小调整

安装uill-image-resize npm install quill-image-resize --save在项目中导入并注册插件 import { QuillEditor, Quill } from vueup/vue-quill; import ImageUploader from quill-image-uploader; import ImageResize from quill-image-resize; //导入插件 import vueup/vue-…...

感知笔记1:ROS 视觉- 跟随红球

- 目录 - 如何在 ROS 中可视化 RGB 相机。如何作为机器人切换主题。如何创建 blob 检测器。如何获取要跟踪的颜色的颜色编码。如何使用 blob 检测数据并移动 RGB 相机以跟踪 blob。 机器人技术中最常见的传感器是不起眼的 RGB 摄像头。它用于从基本颜色跟踪&#xff08;blob 跟…...

JAVA多线程机制

JAVA多线程的实现 JAVA有两种方法创建线程 &#xff08;1&#xff09;继承Thread类 &#xff08;2&#xff09;实现Runnable接口 这两种方法都要用到Thread类以及相关方法 Thread类 是一个具体的类&#xff0c;不是抽象类&#xff0c;封装了线程的行为 利用Thread类创建一个…...

Retinaface+CurricularFace模型在智能门禁系统中的实战应用

RetinafaceCurricularFace模型在智能门禁系统中的实战应用 1. 引言 想象一下这样的场景&#xff1a;每天早晨上班高峰期&#xff0c;办公楼入口排着长队等待刷卡进门&#xff1b;访客需要在前台登记身份证&#xff0c;保安还要手动核对信息。这种传统门禁方式不仅效率低下&am…...

MDXEditor指令系统详解:如何扩展Markdown语法

MDXEditor指令系统详解&#xff1a;如何扩展Markdown语法 【免费下载链接】editor A rich text editor React component for markdown 项目地址: https://gitcode.com/gh_mirrors/editor/editor MDXEditor是一个功能丰富的React组件&#xff0c;专为Markdown编辑设计&am…...

从特效 SDK 到 AI 动效平台:Neon Vibe Motion 的技术演进之路

多媒体中台在 B 站主要负责剪辑、拍摄、直播等业务场景的动效渲染&#xff0c;开发维护的 SDK 在后文统一称为特效 SDK。 传统的视频特效生产一般分三条链路&#xff1a; 三条链路存在一个困境&#xff1a;效果丰富度、实时可交互、生产效率&#xff0c;三者不可兼得。 那么能…...

从服务暴露到语义裁剪:全面理解 SAP ABAP CDS projection view 的设计价值与实战用法

在很多 ABAP 开发者的直觉里,CDS view entity 已经足够强大:既能定义数据模型,也能承载丰富的语义注解,还能为 RAP、OData、分析场景提供统一的数据基础。可一旦进入真正的业务服务设计阶段,你很快就会发现,底层模型的完整能力,并不等于某个具体服务应该暴露给外部的能力…...

ShardingSphere-Proxy 5.2 容器化部署与开发调试实战指南

1. 为什么选择ShardingSphere-Proxy 5.2作为开发调试工具 在分库分表场景下开发应用时&#xff0c;最让人头疼的就是数据查询和调试问题。想象一下&#xff0c;你的订单数据被分散在4个库的8张表中&#xff0c;每次测试时想确认数据是否正确写入&#xff0c;都得手动连接不同数…...

MogFace人脸检测工具问题排查大全:从路径错误到权限问题的解决方案

MogFace人脸检测工具问题排查大全&#xff1a;从路径错误到权限问题的解决方案 1. 工具简介与常见问题概述 MogFace人脸检测工具是基于CVPR 2022发表的MogFace模型开发的本地高精度检测解决方案。它能够准确识别多尺度、多姿态以及部分遮挡的人脸&#xff0c;并自动标注检测框…...

MCP 会不会成为 AI 系统的“新中间件”?

一、为什么人们开始把 MCP 和“中间件”类比&#xff1f;&#xff08;Why Do People Start Comparing MCP to “Middleware”?&#xff09;1、MCP 出现的位置非常“熟悉”&#xff08;MCP Appears in a Very Familiar Position&#xff09;当人们第一次在企业架构中引入 MCP 时…...

3分钟搞定Windows和Office激活:KMS_VL_ALL_AIO智能脚本使用指南

3分钟搞定Windows和Office激活&#xff1a;KMS_VL_ALL_AIO智能脚本使用指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为系统激活烦恼吗&#xff1f;Windows提示许可证过期&#xff0c…...

STM32 SRAM调试实战与优化技巧

1. STM32 SRAM调试实战指南在嵌入式开发中&#xff0c;我们通常将程序烧录到Flash中运行。但当你需要快速验证代码、调试硬件问题或进行临时测试时&#xff0c;使用STM32内部SRAM运行程序会是个高效的选择。我最近在调试一个LED控制程序时&#xff0c;就采用了SRAM运行的方式&a…...

基于Python的可穿戴设备的人机交互设计与实现

前言随着科技的进步发展&#xff0c;人们对生活水平提高有了一定的要求&#xff0c;穿戴设备得到了一定的普及与发展&#xff0c;人与设备之间交互的快捷性和智能化成为了提高用户体验感的关键所在。 对穿戴设备与人之间的交互的需求进行调查&#xff0c;分析用户在使用过程中存…...